从嵌套的异步Ajax调用返回的结果 [英] Return result from nested asynchronous ajax call

查看:94
本文介绍了从嵌套的异步Ajax调用返回的结果的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要从一个嵌套的Ajax调用返回的数据,还需要Ajax调用保持同步。

我找到了一些相关的问题,但不能让它在下面的情况下工作。我认为 returnData Ajax调用之前返回做,但我不能找到一个解决方案。

 函数makeRequest(命令,POSTDATA){

    VAR returnData;

    $阿贾克斯({

        网址:'?call.php命令='+命令,
        数据:POSTDATA,
        键入:POST

    })。完成(功能(数据){
        returnData =数据;
    });

    返回returnData;
}
 

解决方案

是因为这个调用是异步returnData立即返回。如果您需要使用returndata把它传递给函数在回调

 函数makeRequest(命令,POSTDATA,functionToCallAfterAjax){

    VAR returnData;

    $阿贾克斯({

        网址:'?call.php命令='+命令,
        数据:POSTDATA,
        键入:POST

    })。完成(功能(数据){
        functionToCallAfterAjax(数据);
    });


}
 

当然,你可以传递函数作为参数来调用。

这意味着,如果你的code的意思做:

  VAR returnedData = makeRequest(命令,POSTDATA);
anotherFunction(returnedData);
 

你应该做的只是(使用上述code)

  makeRequest(命令,POSTDATA,anotherFunction);
 

这样就可以了。

I need to return the data from an nested ajax call but also need the ajax call to stay asynchronous.

I found some related questions but can't get it to work in the situation below. I assume returnData is being returned before the ajax call is done, but I can't find an solution.

function makeRequest(command, postData){

    var returnData;

    $.ajax({

        url: 'call.php?command='+command,
        data: postData,
        type: 'POST'

    }).done(function(data){
        returnData = data;
    });

    return returnData;
}

解决方案

Yes since this call is async returnData is returned immediately. If you need to use returndata pass it to a function in the callback

function makeRequest(command, postData, functionToCallAfterAjax){

    var returnData;

    $.ajax({

        url: 'call.php?command='+command,
        data: postData,
        type: 'POST'

    }).done(function(data){
        functionToCallAfterAjax(data);
    });


}

Of course you could pass the function to call as a parameter.

This means that if your code was meant to do:

var returnedData = makeRequest(command, postData);
anotherFunction(returnedData);

you should do simply (using the code above)

makeRequest(command, postData, anotherFunction);

and everything will work

这篇关于从嵌套的异步Ajax调用返回的结果的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆