2010-02-17 81 views
0
document.getElementById('contactButton').value = "Sending"; 
xmlhttp.onreadystatechange=stateChanged; 

xmlhttp.open("GET",url,false); 
xmlhttp.send(null); 
function stateChanged(){ 
    if (xmlhttp.readyState==4) { 
    var response = xmlhttp.responseText; 
    if(response == "true"){ 
     document.getElementById('contactButton').value = "Sent :)"; 
    } 
} 

运行此javascript时,contactButton永远不会设置为“正在发送...”。它挂起一秒钟,然后更改为“发送:)”。Javascript:XMLHttpRequest任务切换

我不确定JavaScript的处理顺序,但它似乎需要某种任务切换来处理XMLHttpRequest()

这显然是一个缩写代码,但我在xmlhttp之前尝试做的其他几个javascript/css事情。好像xmlhttp只是在发送请求时接管。

任何想法?

回答

1

您传递false以打开,所以它同步运行。这意味着它不使用readyState,而是延迟直到请求完成。如果你想要做同步,它应该是:

xmlhttp.open("GET",url,false); 
xmlhttp.send(null); 
if(xmlhttp.status == 200) 
{ 
    var response = xmlhttp.responseText; 
    document.getElementById('contactButton').value = "Sent :)"; 
} 

你应该改变,以异步避免挂你的脚本,你可能会发现它更容易使用JavaScript库。

+0

好眼睛!谢谢。 – 2010-02-17 05:52:53