2012-08-28 80 views
0

我目前正在使用一個輕的JavaScript庫來進行ajax調用。圖書館是'jx'。阿賈克斯呼叫超時

它工作正常。但我想添加一個超時,以便在一段時間後沒有響應時停止ajax調用。 我環顧四周,似乎沒有像jQuery一樣的超時參數...

有沒有一種方法來實現超時感謝純JavaScript?像這樣:

timer = setTimeout('function{stop the call}', 20000); 
jx.load(url, function(data){ 
     // get the data 
     clearTimeout(timer); 
     } 

我試過了,它運行得不好...有沒有其他方法可以做到這一點? 或者使AJAX調用SYN

+1

修正你的代碼。而不是'function {stop the call}',它應該是'function(){stop the call}'。另外,我會在ajax調用之後放置超時。 – PitaJ

+0

ajax調用之後的超時?爲什麼?並在計時器結束時,我該如何停止呼叫? –

+0

您正在使用的庫沒有取消處理程序,所以您將無法使用此庫執行此操作。而且,我猜這將無關緊要,你把setTimeout放在哪裏,這只是個人偏好。 – PitaJ

回答

2

如果this是你使用的圖書館,這似乎是可能的:

var xhr = jx.init(); 
var timer = setTimeout(function(){ 
    if(xhr && xhr.abort) xhr.abort(); 
}, 20000); 

jx.load(url, function(data){ 
    clearTimeout(timer); 
}); 
+0

是的,我使用這個圖書館:) 我要試試看吧!謝謝! –

+0

我剛加了你粘貼的代碼。它似乎從來沒有調用jx.http.abort()。所以我得到了我的錯誤消息,感謝計時器,然後我從ajax調用得到響應。 –

+0

又看了一遍jx源碼,看來我第一次弄錯了。你可以嘗試上面更新的代碼嗎? – bfavaretto