考虑以下代码:
$.ajax({
url: "http://x.com/api/AnnouncementCategory/Save",
type: "Post",
success: function (data) {
//Grab our data from Ground Control
alert(data);
},
error: function (event) {
//If any errors occurred - detail them here
alert("Transmission failed. (An error has occurred)");
}
});
使用上面的代码,我们可以发布跨域数据,一切正常。但是当我使用这段代码时:
$.post(' http://x.com/AnnouncementCategory/Save')
我收到此错误:
选项http://x.com/AnnouncementCategory/Save请求 标题字段X-Requested-With不允许 访问控制允许报头。 jquery-1.9.1.js:8526 XMLHttpRequest 无法加载http://x.com/AnnouncementCategory/Save。请求 标题字段X-Requested-With不允许 接入控制允许集管。
我看到了jquery源代码:
function ( url, data, callback, type ) {
// shift arguments if data argument was omitted
if ( jQuery.isFunction( data ) ) {
type = type || callback;
callback = data;
data = undefined;
}
return jQuery.ajax({
url: url,
type: method,
dataType: type,
data: data,
success: callback
});
}
Jquery也在帖子中使用ajax。 **我知道我的错误是什么,只是想知道:** $ .ajax与type:post和jquery post有什么区别?
答案 0 :(得分:2)
jQuery的$.ajax
方法始终为任何跨域请求发送“x-requested-with”标头,与$.post
不同。您获得的错误是由于外部服务器处理外部请求的方式。请look here获取更多信息如何处理CORS(跨域资源共享 - 即跨域Ajax)。同样here你会发现类似的问题和解决方案。
答案 1 :(得分:0)
您提出的问题的简单答案是$.ajax
的简写版本,如文档中所述:
http://api.jquery.com/jQuery.post/
文档确实说明了:
由于浏览器安全限制,大多数“Ajax”请求都是主题 同源政策;请求无法成功检索 来自不同域,子域或协议的数据。
您没有问过的问题,但也许是您真正想问的问题,“为什么跨域请求对我来说是使用带有简单POST类型的$ .ajax,但不是$。员额?“的。为此,您可能需要提供更多信息。