从嵌套的异步Ajax调用返回的结果 [英] Return result from nested asynchronous ajax call
问题描述
我需要从一个嵌套的Ajax调用返回的数据,还需要Ajax调用保持同步。
我找到了一些相关的问题,但不能让它在下面的情况下工作。我认为 returnData code> 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屋!