2012-08-16 54 views
0

我在網頁中使用了一個簡單的AJAX調用。
他的網頁是這樣的。在單擊提交按鈕時,JavaScript將文本框中的數據發送到服務器,並將響應顯示在一個div中。等待AJAX​​響應時,網頁變爲非活動狀態?

我的AJAX代碼是:

var xmlHttp = null; 
var api="getdetails.jsp?id="; 
var theUrl=api.concat(theId); 
xmlHttp = new XMLHttpRequest(); 
xmlHttp.open("GET", theUrl, false); 
xmlHttp.send(); 
document.getElementById("details").innerHTML=xmlHttp.responseText; 

但問題是,在等待AJAX​​響應的網頁變爲無效。也就是說,用戶不能輸入文本框或點擊任何其他鏈接等。收到答覆後才能做任何事情。

如何讓網頁在等待響應時起作用?我是否必須採用多線程或其他方式?

+1

請發表你的JavaScript代碼 – codebox 2012-08-16 07:00:05

+0

顯然你的AJAX調用是同步的(這是** **不是默認行爲)。向我們展示您的AJAX請求代碼。 – 2012-08-16 07:00:23

回答

1

您需要通過將請求中的

xmlhttp.open("GET",theUrl,true);
第三個參數設置爲true來使您的ajax請求異步。

而且這條線

document.getElementById("details").innerHTML=xmlHttp.responseText;

應與

xmlHttp.onreadystatechange
寫成這樣,當一個狀態變化發生,其結果是提供的responseText則只有ü可以設置一個DOM元素。請仔細閱讀使用ajax的文檔。

見這個例子http://www.w3schools.com/ajax/tryit.asp?filename=tryajax_first

+0

但改變它似乎影響了它似乎的要求。網頁重新加載而不是顯示響應。除了這個之外,我還需要改變什麼嗎? – 2012-08-16 07:08:30

+1

您還需要使用'xmlHttp.onreadystatechange'來顯示收到時的數據... [MDN](https://developer.mozilla.org/en-US/docs/AJAX/Getting_Started) – Passerby 2012-08-16 07:16:52