编程语言
首页 > 编程语言> > javascript – 如何在jquery中获取多个延迟调用的ajax结果?

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

作者:互联网

我正在尝试获取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>

标签:jquery,javascript,jquery-deferred
来源: https://codeday.me/bug/20190515/1109610.html