2013-03-09 56 views
-1

我從JavaScript調用ajax定期(10秒)從數據庫加載數據。響應列在一個小格中。但是每10秒一次,我就會遇到接口不響應用戶操作(如鼠標點擊,按鍵等)的問題。有關此主題的任何幫助將不勝感激。AJAX定期間隔

代碼

var onlineLeads = function() { 
var reqst =""; 
var size=""; 
var url ="<s:property value="str_applicationPath"/>/Marketing/Online_showNewRequest"; 
xmlHttp.open("POST", url, false);           
xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
xmlHttp.setRequestHeader("Connection", "close"); 
xmlHttp.onreadystatechange = function() {//Call a function when the state changes. 
if(xmlHttp.readyState == 4 && xmlHttp.status == 200) { 

//Code for display 

} 
} 
xmlHttp.send(); 
setTimeout(onlineLeads, 15000); 
}; 
setTimeout(onlineLeads, 1000); 
+0

請提供代碼或jsfiddle或demo,我們不是通靈 – Dogoku 2013-03-09 09:27:45

+1

它是同步嗎?只需發佈您的代碼。 – Blender 2013-03-09 09:30:34

+0

@Blender抱歉,遺漏碼。請參閱我的編輯。 – user2151071 2013-03-09 10:08:08

回答

2

您還沒有執行的Ajax:

xmlHttp.open("POST", url, false); 
//      ^^^^^ 
//  Puts the request into synchronous mode 

在同步模式下,調用塊,直到響應回來。這關聯了JS事件循環。

false更改爲true

+0

謝謝大家的快速回復。讓我試試看。 – user2151071 2013-03-09 10:14:08

+0

謝謝。這解決了這個問題。但我有疑問。如果存在多個ajax調用,如果我在同步模式下使用此請求,它會產生任何問題 – user2151071 2013-03-11 07:05:27

+0

如果您處於同步模式,則一次不能有多個請求,它會完全鎖定JS線程 - 這是你遇到的問題。 – Quentin 2013-03-11 07:07:41