Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/454.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从嵌套异步ajax调用返回结果_Javascript_Jquery_Ajax - Fatal编程技术网

Javascript 从嵌套异步ajax调用返回结果

Javascript 从嵌套异步ajax调用返回结果,javascript,jquery,ajax,Javascript,Jquery,Ajax,我需要从嵌套的ajax调用返回数据,但也需要ajax调用保持异步 我发现了一些相关的问题,但在下面的情况下无法使其工作。我假设在ajax调用完成之前返回了returnData,但我找不到解决方案 function makeRequest(command, postData){ var returnData; $.ajax({ url: 'call.php?command='+command, data: postData, t

我需要从嵌套的ajax调用返回数据,但也需要ajax调用保持异步

我发现了一些相关的问题,但在下面的情况下无法使其工作。我假设在ajax调用完成之前返回了
returnData
,但我找不到解决方案

function makeRequest(command, postData){

    var returnData;

    $.ajax({

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

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

    return returnData;
}

你不能。异步事件不是这样工作的

HTTP请求被发送,然后触发它的函数立即继续。在HTTP响应到达之前不会触发回调,但调用函数将在何时结束


您必须让回调函数(您要传递给
done()
)执行所需的任何进一步处理。

您不能。异步事件不是这样工作的

HTTP请求被发送,然后触发它的函数立即继续。在HTTP响应到达之前不会触发回调,但调用函数将在何时结束


必须让回调函数(传递给
done()
的函数)执行所需的任何进一步处理。

.done()
函数运行之前返回
returnData
的值。通过将接收到的数据传递给函数进行处理来更正代码:

function makeRequest(command, postData){
    $.ajax({
        url: 'call.php?command='+command,
        data: postData,
        type: 'POST'
    }).done(function(data){
        HandleCallBack(data);
    });
}

在运行
.done()
函数之前,您正在返回
returnData
的值。通过将接收到的数据传递给函数进行处理来更正代码:

function makeRequest(command, postData){
    $.ajax({
        url: 'call.php?command='+command,
        data: postData,
        type: 'POST'
    }).done(function(data){
        HandleCallBack(data);
    });
}

是,因为此调用是异步返回数据,所以会立即返回数据。如果需要使用returndata,请将其传递给回调函数中的函数

function makeRequest(command, postData, functionToCallAfterAjax){

    var returnData;

    $.ajax({

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

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


}
当然,您可以将要调用的函数作为参数传递

这意味着如果您的代码要执行以下操作:

var returnedData = makeRequest(command, postData);
anotherFunction(returnedData);
您应该做的很简单(使用上面的代码)


而且一切都将正常运行

是的,因为此调用是异步返回的。数据将立即返回。如果需要使用returndata,请将其传递给回调函数中的函数

function makeRequest(command, postData, functionToCallAfterAjax){

    var returnData;

    $.ajax({

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

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


}
当然,您可以将要调用的函数作为参数传递

这意味着如果您的代码要执行以下操作:

var returnedData = makeRequest(command, postData);
anotherFunction(returnedData);
您应该做的很简单(使用上面的代码)


一切都会正常运行。

将返回放入.done回调中。@Aidanc-哪个将数据返回到…where?将返回放入.done回调中。@Aidanc-哪个将数据返回到…where?