小编典典

在AJAX中,如何从onreadystatechang = function()内部检索变量

ajax

是否可以onreadystatechange从函数外部检索函数中设置的变量?
--edit–
关于函数的执行:
如果可能的话,我想单击执行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);
}

阅读 238

收藏
2020-07-26

共1个答案

小编典典

以下代码假定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););
}
2020-07-26