jquery ajax - 从getJson(数据)和何时(数据)返回数据的区别

时间:2015-02-24 04:40:11

标签: jquery ajax

我有一些正在运行的ajax代码。在第一个实例中,我使用$ .when,在第二个实例中,我使用$ getJson。

当我使用$时,我必须将返回的数据引用为[0]。但是当我使用$ getJson时,我不需要获取数组中的第一个元素。从所有呼叫返回的json是相同的。

我一直在尝试阅读文档,说明为什么会如此,但无法找到doco中注明的位置。有人可以向我说明为什么两者之间存在差异以及它在doco中的含义是什么?

感谢

function fetchTranTrends(callback) {
    $.getJSON("service/tranAnalysis/tranTrendsPreviousBusinessDate.json?siteId=" + userStore, function(json) {      
        var data = [];
        data.push(json);
        callback(data);
    }); 
}

function fetchYearlyComparisonData(callback) {

    $.when(fetchThisYearsData(), fetchLastYearsData()).done(function (dataThisYear, dataLastYear) {
        var data = [];
        data.push(dataThisYear[0]);
        data.push(dataLastYear[0]);
        callback(data);
    });
}

function fetchThisYearsData() {         
    return $.getJSON("service/tranAnalysis/tranCountsPreviousSevenDays.json?siteId=" + userStore + "&yearOffset=0", function(json) {}); 
}

function fetchLastYearsData() {
    return $.getJSON("service/tranAnalysis/tranCountsPreviousSevenDays.json?siteId=" + userStore + "&yearOffset=1", function(json) {}); 
}

2 个答案:

答案 0 :(得分:1)

请参阅jquery文档中给出的when示例。

http://api.jquery.com/jquery.when/#example-0

$.when( $.ajax( "/page1.php" ), $.ajax( "/page2.php" ) ).done(function( a1, a2 ) {
// a1 and a2 are arguments resolved for the page1 and page2 ajax requests, respectively.
// Each argument is an array with the following structure: [ data, statusText, jqXHR ]
var data = a1[ 0 ] + a2[ 0 ]; // a1[ 0 ] = "Whip", a2[ 0 ] = " It"
if ( /Whip It/.test( data ) ) {
alert( "We got what we came for!" );
}
});

每个参数都是a1=[data, statusText, jqXHR]形式的数组。

因此,您需要执行a1[0]来获取呼叫返回的数据。

希望有所帮助。

答案 1 :(得分:1)

您正在使用具有多个承诺的$.when(),在这种情况下,每个承诺可能会使用不同数量的参数来解析,因此在回调方法中,很难知道参数顺序和请求顺序。

所以在$.when()中发生的事情是将promise的所有参数分组为一个数组,并传递与回调的promise数一样多的数组