javascript - 如何在 jquery 中获取多个延迟调用的 ajax 结果?

标签 javascript jquery jquery-deferred

我正在尝试让 jquery 延迟工作,如下面的代码所示。

<script type="text/javascript">
    var appUrls = {
                      GetDataUrl : '@Url.Action("GetData")'
                  };

    function GetData1(){
        return $.getJSON(appUrls.GetDataUrl, { Id: 1 });
    }

    function GetData2() {
        return $.getJSON(appUrls.GetDataUrl, { Id: 2 });
    }

    $(function(){
        $("#result").html("Getting Data1, Data2 .... ");

        $.when(GetData1(), GetData2())
         .then(function(result){
             //The 'result' only contains the data from first request.  
             console.log(result);
             $("#result").html("Completed GetData1, GetData2"); 
         });

    });

    </script>

在两个调用都完成后,我想提取从两个调用返回的 Json 数据。但是,'result' 对象只包含第一次调用(GetData1)返回的数据?如何获得上面“then”回调方法中两次调用的结果。

最佳答案

由于您有两个请求,您将获得两个参数 result1,result2:

<script type="text/javascript">
var appUrls = {
    GetDataUrl : '@Url.Action("GetData")'
};

function GetData1(){
    return $.getJSON(appUrls.GetDataUrl, { Id: 1 });
}

function GetData2() {
    return $.getJSON(appUrls.GetDataUrl, { Id: 2 });
}

$(function(){
    $("#result").html("Getting Data1, Data2 .... ");

    $.when(GetData1(), GetData2())
    .then(function(result1,result2){
        console.log(result1);
        console.log(result2);
        $("#result").html("Completed GetData1, GetData2"); 
    });

});

</script>

关于javascript - 如何在 jquery 中获取多个延迟调用的 ajax 结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5066544/

相关文章:

javascript - ESLint - 组件应编写为纯函数( react 首选/无状态函数)

jquery - 与 jquery 1 和 2 不同,jquery 3 ajax 处理程序仅在完成处理程序代码后才执行新添加的 html+js

javascript - 如何解析带有千位分隔符的两个空格分隔的数字?

javascript - Crypto-JS 总是返回新的哈希值

javascript - 删除父div - jquery

javascript - 在某个 div 下停止 body 滚动

javascript - 通过用户输入停止 jquery .then 链

javascript - AJAX JQuery 延迟回调仅被调用一次

javascript - 我可以在多行 php 变量中插入 php 和 html 吗?

javascript - 禁用标题中的滚动条但不禁用网页的内容