2012-08-28 158 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