在jQuery docs regarding Deferreds中,有一个返回ajax args的例子,包括jqXHR:
$.when( $.ajax("test.php") ).then(function(ajaxArgs){
alert(ajaxArgs[1]); /* ajaxArgs is [ "success", statusText, jqXHR ] */
});
但似乎文档是错误的。 ajaxArgs
实际上是$.ajax
来电的回复。
我需要访问jqXHR对象,因为我需要一些关于实际调用的元数据,但它似乎非常hackish。这就是我目前正在做的事情,但必须有一个更好的方法(交叉手指)。
xhr = $.ajax({
'url': src,
}).done(function () {
var meta = xhr.getResponseHeader(...);
});
访问我需要的jqXHR数据的最佳/最简单方法是什么?
答案 0 :(得分:2)
使用第三个参数:
.then(function(text,status,xhr) {
var meta = xhr.getResponseHeader(...);
});
但是请注意,如果将多个延迟传递给$.when
,它将是第一个参数的第三个索引,第二个或第三个,具体取决于您想要标题的请求。
$.when( $.ajax("test.php"),$.ajax("test.php"),$.ajax("test.php") ).then(function(){
var meta1 = arguments[0][2].getResponseHeader(...);
var meta2 = arguments[1][2].getResponseHeader(...);
var meta3 = arguments[2][2].getResponseHeader(...);
});