使用$.ajax(type: post)和$.post有什么区别?

7
考虑以下代码:

$.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')

我遇到了这个错误:
OPTIONS http://x.com/AnnouncementCategory/Save 请求头 X-Requested-With 字段被 Access-Control-Allow-Headers 拒绝。jquery-1.9.1.js:8526 XMLHttpRequest 无法加载 http://x.com/AnnouncementCategory/Save。请求头 X-Requested-With 字段被 Access-Control-Allow-Headers 拒绝。
我查看了 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进行post请求。 **我知道我的错误,只是想知道:**$.ajax的type属性为post和jquery的post方法之间有什么区别?


可能是无害的,但是$.post里面的那个http前面有多了一个空格吗? - Davin Tryon
2个回答

2

jQuery的$.ajax方法总是为任何跨域请求发送“x-requested-with”头,不像$.post。你遇到的错误是因为外部服务器处理外部请求的方式不同。请点击此处以获取有关如何处理CORS(跨域资源共享 - 即跨域Ajax)的更多信息。同时,在这里你将找到类似的问题和解决方案。


0
你所问的问题的简单答案是,一个缩写版本的$.ajax,如文档中所述:

http://api.jquery.com/jQuery.post/

文档确实说明:

由于浏览器安全限制,大多数“Ajax”请求都受到同源策略的限制;请求无法成功地从不同的域、子域或协议中检索数据。

你没有问的问题,但也许是你真正想问的是:“为什么使用简单的POST类型的$.ajax可以跨域请求,而$.post不能?”。对此,您可能需要提供更多信息。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接