$ .ajax与type:post和$ .post之间有什么区别?

时间:2013-09-30 10:37:43

标签: javascript jquery ajax

考虑以下代码:

$.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有什么区别?

2 个答案:

答案 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,但不是$。员额?“的。为此,您可能需要提供更多信息。