我想POST HTML表单到web-api。
如果我在其他领域使用jQuery执行ajax POST,一切都OK,我收到200 OK ,但在firebug和响应选项卡中,我收到如下图所示的空白响应。这是我的jQuery代码:
var formData = new FormData($('form')[0]);
var response = '';
$.ajax({
url: 'http://localhost:2143/api/controller',
type: 'POST',
// Form data
data: formData,
//Options to tell JQuery not to process data or worry about content-type
cache: false,
contentType: false,
processData: false,
success : function(text)
{
response = text;
alert(response);
}
});
由于浏览器内置的same origin policy restriction
,不允许执行跨域AJAX调用。您有几个可能的解决方案:
-
JSONP
—这里的想法是您的服务器将在回调中包装JSON响应。这只适用于GET请求,因此它可能不适合您的情况,从我可以看到,您正在尝试发送POST请求。您可以使用自定义JsonpMediaTypeFormatter
,如this similar post
所示。 -
CORS
-服务器应该发送一个特殊的Access-Control-Allow-Origin
响应HTTP头。缺点是旧的浏览器可能不支持它。以下是blog post
,详细介绍了这一点。 - 服务器端桥接。如果前两种技术不适合你,因为他们强加的限制,你可以有一个服务器端脚本在托管你的javascript的域,将作为代理之间的代理你的域和远程域托管API。在这种情况下,您将发送AJAX请求到您自己的域,该域将调用远程API并将结果返回给客户端。