我有一个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]
。
答案 0 :(得分:3)
请参阅this jQuery webpage上的第一个和前一个示例。
目前你有doStuff(jsonData)。 jsonData仅对应于第一个Ajax查询中返回的数组[data, textStatus, jqXHR]
!所以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
}