2014-05-16 124 views
-2

我知道ajax调用的超时设置。但我想知道的是,有没有办法显示一条消息给用户,如果ajax调用仍在处理中,但需要超过x秒。jQuery .ajax或.post消息太长

E.g.

在Ajax调用,如果它需要更长的时间超过10秒告诉用户,“通话时间超出预期”

+0

你可以使用这里的计时器:http://stackoverflow.com/questions/4542863/jquery-ajax-call-with-timer很容易弹出警报或任何。如果有特定的反馈方法,可能会有更具体的插件。你想如何告诉用户? – zanerock

+0

我回答,就像20分钟前: http://stackoverflow.com/questions/23691167/run-function-if-jquery-ajax-waiting-for-respond-long-enough我不能标记为重复,因为其他人没有回应我的答案,但我相当确定它的工作原理。 –

回答

-1

当然,刚刚的setTimeout()自己,会检查被通过设置一些全局变量另一个函数ajax完成回调。在该函数中,如果ajax调用仍然未完成,请显示一条消息。

0

我说你最好的选择是使用window.setTimeout然而对于要等待显示您通知之前,然后在您的通话$.ajax()添加window.clearTimeout一行到你的success回调长:

var loadingTimeout = window.setTimeout(function() { 
    // show your warning here 
    alert('Still loading :P'); 
}, 10000); // 10000ms = 10sec 

$.ajax({ 
    url: 'http://your/url/here', 
    dataType: 'json', 
    type: 'GET', 
    success: function(r) { 
    window.clearTimeout(loadingTimeout); 
    // your results logic here 
    } 
}) 
+0

只要ajax调用失败,将clearTimeout行放在完整的回调函数中怎么样? – PeterKA