2010-02-17 78 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