Javascript jQuery延迟&;Ajax—如何访问jqXHR对象?

Javascript jQuery延迟&;Ajax—如何访问jqXHR对象?,javascript,jquery,ajax,jquery-deferred,Javascript,Jquery,Ajax,Jquery Deferred,在中,有一个返回ajax参数(包括jqXHR)的示例: $.when( $.ajax("test.php") ).then(function(ajaxArgs){ alert(ajaxArgs[1]); /* ajaxArgs is [ "success", statusText, jqXHR ] */ }); 但这些文件似乎是错的ajaxArgs实际上是来自$.ajax调用的响应 我需要访问jqXHR对象,因为我需要一些关于实际调用的元数据,但它似乎非常粗糙。这就是我目前正在做的,

在中,有一个返回ajax参数(包括jqXHR)的示例:

$.when( $.ajax("test.php") ).then(function(ajaxArgs){ 
    alert(ajaxArgs[1]); /* ajaxArgs is [ "success", statusText, jqXHR ] */
});
但这些文件似乎是错的
ajaxArgs
实际上是来自
$.ajax
调用的响应

我需要访问jqXHR对象,因为我需要一些关于实际调用的元数据,但它似乎非常粗糙。这就是我目前正在做的,但必须有更好的方法(交叉手指)


访问我需要的jqXHR数据的最佳/最简单的方法是什么?

使用第三个参数:

.then(function(text,status,xhr) {
   var meta = xhr.getResponseHeader(...);
});
但是请注意,如果您将多个延迟传递到
$。当
时,它将是第一个参数、第二个参数或第三个参数的第三个索引,具体取决于您想要哪个请求的标题

$.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(...);
});

您使用的jQuery版本是什么?
$.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(...);
});