如果我在其中使用alert,Javascript代码就可以工作,否则它'It’不起作用

Javascript code is working if I am using alert in it otherwise it's not working

本文关键字:不起作用 It 就可以 在其中 alert 如果 代码 Javascript 工作      更新时间:2024-01-15

我在javascript代码中使用XMLHttpRequest。

我使用的是jquery-1.7.1。

如果我在XMLHttpRequest之后使用alert,那么下一个代码会顺利运行,但在删除该alert时,下一个语句不会获得XMLHttpRequest块中初始化的变量的值。

以下是我使用的代码

var dyn_data='';
if (!xmlhttp && typeof XMLHttpRequest!='undefined')
{
    xmlhttp = new XMLHttpRequest();
}
if (xmlhttp) 
{ 
    var query = 'ACTION=test&format=text';
    xmlhttp.open('POST', 'sample.php'); 
    xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=UTF-8');
    xmlhttp.send(query); 
    xmlhttp.onreadystatechange = function() 
        { 
            var arrayindex=0;
            if (xmlhttp.readyState == 4 && xmlhttp.status == 200) 
            {
                dyn_data=xmlhttp.responseText;
            }
        }
}
var obj = $.parseJSON(dyn_data);
alert(obj);
var data=obj;

如果我在上面的代码中注释alert,那么它就不起作用了。

我在警戒处尝试了以下声明,但它对我也不起作用。

setTimeout(function(){  }, 5000);

如有任何帮助/建议,我们将不胜感激。

XMLHttpRequest是异步的。这意味着在达到$.parseJSON行之前还没有设置dyn_data值。所有依赖于响应的代码都应该放在onreadystatechange处理程序中。试试这个:

var xmlhttp;
if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
    xmlhttp = new XMLHttpRequest();
}
else if (xmlhttp) { 
    var query = 'ACTION=test&format=text';
    xmlhttp.open('POST', 'sample.php'); 
    xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=UTF-8');
    xmlhttp.send(query); 
    xmlhttp.onreadystatechange = function() { 
        var arrayindex = 0;
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
            var obj = $.parseJSON(xmlhttp.responseText);
            console.log(obj);
            var data = obj;
        }
    }
}