在jQuery docs regarding Deferreds中,有一个返回包含jqXHR的ajax args的示例:
$.when( $.ajax("test.php") ).then(function(ajaxArgs){
alert(ajaxArgs[1]); /* ajaxArgs is [ "success", statusText, jqXHR ] */
});
但似乎文档是错误的。
ajaxArgs
实际上是$.ajax
调用的响应。我需要访问jqXHR对象,因为我需要一些有关实际调用的元数据,但这似乎有些黑。这是我目前正在做的事情,但是必须有一个更好的方法(用手指交叉)。
xhr = $.ajax({
'url': src,
}).done(function () {
var meta = xhr.getResponseHeader(...);
});
获得所需的jqXHR数据的最佳/最简便方法是什么?
最佳答案
使用第三个参数:
.then(function(text,status,xhr) {
var meta = xhr.getResponseHeader(...);
});
但是请注意,如果将多个deferreds传递到
$.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(...);
});
关于javascript - jQuery Deferreds和Ajax-如何访问jqXHR对象?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10824786/