AJAX同步问题

在js代码中,有时需要将AJAX返回值存入变量以供js使用,但是由于AJAX默认是异步的,因此可能会发生js访问该变量时,但此时AJAX还没有返回值,这样就造成程序运行结果不是我们所期待的。

AJAX默认是异步的,反映在代码上是

if (window.XMLHttpRequest){
        // code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp=new XMLHttpRequest();
    }
    else{
        // code for IE6, IE5
        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlhttp.onreadystatechange=function(){
        if (xmlhttp.readyState==4 && xmlhttp.status==200){
             //your code
        }
    }
    xmlhttp.open("POST",path,true);
    xmlhttp.send();

上面代码中红色的true表示AJAX使用异步方式,将true改为false,AJAX就使用同步方式了。

AJAX使用同步方式时,在AJAX获取返回值之前,js代码处于假死状态,等到AJAX获得返回值之后,js代码才会往下执行。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

3 × 5 =

3 + 1 =