xmlhttp.readyState == 4中的代码无法执行

时间:2010-12-30 06:31:44

标签: php javascript ajax

function download() {
    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() 
    {   //alert(xmlhttp.readyState);
        if(xmlhttp.readyState==4 && xmlhttp.status==200)
        {
            alert (xmlhttp.responseText);
        }   
    }

    xmlhttp.open("GET","import.php?file="+document.getElementById('uploaded_file').value,false);
    xmlhttp.send(); 

  //  location.reload(true);
}

如果我发出警报并监视xmlhttp.readyState,那么它会显示我的状态确实变为4并且它确实进入了if语句,如果我没有用警报监视它,那么它就不会进入if语句,但我知道import.php正在工作,因为我可以看到数据库中的更改。我不知道发生了什么......任何人都可以帮忙。

由于

1 个答案:

答案 0 :(得分:1)

这是因为location.reload(true);正在重新加载页面,而不是等待xmlhttp调用完成

更新: 尝试在xmlhttp.open调用true

中设置第3个参数

来自文档:

  

是否有布尔指示符   调用是异步的。默认是   为真(呼叫立即返回)。   如果设置为True,请附加   onreadystatechange属性回调   这样你就可以告诉发送的时间   电话已经完成。

http://msdn.microsoft.com/en-us/library/ms757849%28v=vs.85%29.aspx