我正在制作跨域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头的资源请求,我观察到以下内容:
fail()
回调未执行。这似乎是合理的,因为jQuery的ajax()
文档包含error
参数的这个注释,它应该类似于fail()
:
注意:不会为跨域脚本和跨域JSONP请求调用此处理程序。
always()
回调也未被触发。这更成问题,因为无论Ajax请求发生什么,目的都是让程序流继续。我也没有在jQuery的文档中发现任何迹象表明这是预期的行为。
所以我的问题是双重的:
always()
回调中获取代码?