我有一个 jQuery .when()
,它进行两个 ajax 调用,然后将数据传递给另一个函数:
function getTableData() {
$.when(ajaxCall1(), ajaxCall2()).then(doStuff);
}
两种 ajax 方法本质上是相同的,只是它们在 Controller 上使用不同的方法:
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]
。
最佳答案
请参阅 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
}
关于ajax - jquery .when(f1, f2).then() 返回 f1 的对象数组,但返回 f2 的responseText。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17406527/