jQuery.when:获取xhr状态代码

时间:2017-02-08 13:07:14

标签: jquery ajax .when

我有两个ajax调用,在使用jQuery.when()

完成这两个调用之后执行一些回调
$.when(loadDataA(), loadDataB()).done(function(dataA, dataB) {
  console.log(xhr.status); // How do I get the xhr.status?
}

我想知道第一个电话的xhr.status。使用正常的.done(),您可以执行以下操作:

.done(function(data, statusText, xhr) {
  console.log(xhr.status);
}

但我无法在我的案例中发挥作用。

使用jQuery.when时如何获取?

1 个答案:

答案 0 :(得分:1)

来自$.when()的文档:

如果Deferred被解析为没有值,则相应的doneCallback参数将是未定义的。如果Deferred解析为单个值,则相应的参数将保存该值。在Deferred解析为多个值的情况下,相应的参数将是这些值的数组。例如:

var d1 = $.Deferred();
var d2 = $.Deferred();
var d3 = $.Deferred();

$.when( d1, d2, d3 ).done(function ( v1, v2, v3 ) {
    console.log( v1 ); // v1 is undefined
    console.log( v2 ); // v2 is "abc"
    console.log( v3 ); // v3 is an array [ 1, 2, 3, 4, 5 ]
});

d1.resolve();
d2.resolve( "abc" );
d3.resolve( 1, 2, 3, 4, 5 );

在您的情况下,dataA将是一个包含三个元素的数组:

dataA[0] -> data
dataA[1] -> statusText
dataA[2] -> xhr

有了......

  

使用jQuery时如何获取它?什么时候?

dataA[2].status