跨域Ajax请求:always()回调未触发

时间:2015-07-29 04:33:24

标签: javascript jquery ajax callback cors

我正在制作跨域Ajax请求,并希望附加一些回调来处理结果。我的代码如下所示:

$.ajax({
    type: "POST",
    url: "http://othersite.com/service",
    contentType: "json",
    dataType: "xml",
    data: JSON.stringify({
        foo: "bar"
    })
}).done(function (data) {
    // process data
}).fail(function (jqXHR, textStatus, errorThrown) {
    // handle errors
}).always(function () {
    // proceed with rest of code
});

存在always()回调,因为无论Ajax请求的结果如何,都有我想要执行的代码。对于没有必要CORS头的资源请求,我观察到以下内容:

  1. fail()回调未执行。这似乎是合理的,因为jQuery的ajax()文档包含error参数的这个注释,它应该类似于fail()

      

    注意:不会为跨域脚本和跨域JSONP请求调用此处理程序。

  2. always()回调也未被触发。这更成问题,因为无论Ajax请求发生什么,目的都是让程序流继续。我也没有在jQuery的文档中发现任何迹象表明这是预期的行为。

  3. 所以我的问题是双重的:

    • 当由于CORS限制导致Ajax请求失败时,如何在always()回调中获取代码?
    • 是否有关于何时不针对跨域Ajax请求触发回调的明确文档?

0 个答案:

没有答案