2

我有一个 jQuery.when()进行两次 ajax 调用,然后将数据传递给另一个函数:

function getTableData() {
   $.when(ajaxCall1(), ajaxCall2()).then(doStuff);
}

两种 ajax 方法本质上是相同的,只是它们在控制器上使用了不同的方法:

    function ajaxCall1() {
        return $.ajax({
            type: 'POST',
            url: 'Controller/ControllerMethod1',
        });
    }

    function ajaxCall2() {
        return $.ajax({
            type: 'POST',
            url: 'Controller/ControllerMethod2',
        });
    }

我希望doStuff()每个 ajax 方法传递给的数据都是相同的,但情况似乎并非如此。

    function doStuff(jsonData) {
        doStuffWithData(jsonData[0]);
        doMoreStuffWithData(jsonData[2]);
    }

我期望jsonData[0]并且jsonData[2]都包含一个对象数组。FireBug 向我展示了以下内容jsonData[0]

[Object { Description="Completed", Id=3, ItemTypelist=[2]}, Object { Description="Completed - QC", Id=3, ItemTypelist=[2]}, Object { Description="Completed - Approval Needed", Id=3, ItemTypelist=[2]}, 5 more...]

jsonData[2]看起来像这样:

Object { readyState=4, responseText="[{"Description":"Comple...Item Type 2","Id":1}]}]", status=200, more...}

为什么这些不同?我需要jsonData[2]jsonData[0]

4

1 回答 1

3

请参阅此 jQuery 网页上的第一个和最后一个示例。

目前你有 doStuff(jsonData)。jsonData 仅对应于[data, textStatus, jqXHR]第一个 Ajax 查询返回的数组!所以 jsonData[0] 是第一个查询的数据, jsonData[2] 是第一个查询的 XHR。您必须更改 doStuff,例如:

doStuff(jsonData1, jsonData2)
{
  // jsonData1[0] holds data from ajax request 1
  // jsonData2[0] holds data from ajax request 2
}
于 2013-07-01T14:22:58.337 回答