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

我收到此错误:

选项http://x.com/AnnouncementCategory/Save请求标头字段 X-Requested-With 不允许 Access-Control-Allow-Headers。jquery-1.9.1.js:8526 XMLHttpRequest 无法加载http://x.com/AnnouncementCategory/Save。Access-Control-Allow-Headers 不允许请求头字段 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 with type: post 和 jquery post 有什么区别?

4

2 回答 2

2

与. $.ajax_ _ _ $.post您收到的错误是由于外部服务器处理外部请求的方式。请查看此处以获取更多信息,了解如何处理 CORS(跨域资源共享 - 即跨域 Ajax)。同样在这里你会发现类似的问题和解决方案。

于 2013-09-30T12:56:42.263 回答
0

您提出的问题的简单答案是 的简写版本$.ajax,如文档中所述:

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

文档确实指出:

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

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

于 2013-09-30T10:47:41.083 回答