ajax - jquery .when(f1, f2).then() 返回 f1 的对象数组,但返回 f2 的responseText。为什么?

标签 ajax asp.net-mvc json jquery

我有一个 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/

相关文章:

c# - MVC中访问ViewData的集中函数

asp.net-mvc - ASP.NET WebApi 与 MVC?

java - 如何使用 GSON 只返回一个特定的空字段?

jQuery/Ajax : How to loop through array as part of Ajax success function

javascript - 通过 Html.BeginForm 提交激活加载动画

c# - 如何从 Request.Form 获取所有元素值而不用 .GetValues ("ElementIdName"准确指定哪个元素值)

c# - 如何将 JToken 转换为嵌套的 float 列表?

json - 如何将 JSON 字符串作为值嵌入 Kubernetes Secret

ajax - Owin Self Host WebApi2 上的 CORS 错误

javascript - 如何使用 .load() 从另一个域获取内容?