This question already has answers here:
How do I return the response from an asynchronous call?
                                
                                    (38个答案)
                                
                        
                5年前关闭。
            
        

是否可以从函数外部检索onreadystatechange函数中设置的变量?
- 编辑 -
关于功能的执行:
如果可能的话,我想一键执行ajaxFunction()
 然后单击popup(),或者
以某种方式等待ajax函数结束,然后调用警报框

用伪代码:

function ajaxFunction(){
    //creating AJAX
    ...
    // Create a function that will receive data sent from the server
    ajaxRequest.onreadystatechange = function (){
        if(ajaxRequest.readyState == 4){
            //success code
            ======>Here i want to set variable <=====
            var MyVariable='MyContent';
        }
    }
    //Retrieving page
    ....
}

function popup(){
    ajaxFunction();
    alert(MyVariable);
}

最佳答案

以下代码假定ajax请求是同步的:

function popup(){
    ajaxFunction();
    alert(MyVariable);
}


但是由于同步请求阻止了浏览器,因此您几乎在所有情况下都应使用异步调用(如果我没记错的话,不应在同步请求上调用onreadystatechange,但是不同的浏览器的行为会有所不同)

您可以做的是:

function ajaxFunction(callback){
    //creating AJAX
     ...
    // Create a function that will receive data sent from the server
    ajaxRequest.onreadystatechange = function (){
        if(ajaxRequest.readyState == 4){
            //success code
            callback('MyContent')
        }
    }
    //Retrieving page
     ....
}

function popup() {
  ajaxFunction(function(MyVariable){alert(MyVariable););
}

关于javascript - 在AJAX中,如何从onreadystatechange = function()内部检索变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/290214/

10-16 14:34
查看更多