标题可能会产生误导,但这基本上是我需要完成的。
如果服务器响应时间超过15秒,我想要更新一个AJAX“正在加载”的文本。
以下是代码:
$(".loader").html('Loading');
$(".loader").show();
setTimeout(function () {
if ($('.loader').is(":visible")) {
$(".loader").html('Click <a href="javascript:location.reload()">here</a> to reload.</span>');
}
}, 15000);
有更好的方法吗?当我最终致电$(".loader").hide();
时,我希望setTimeout
计数器被中止。有可能吗?
答案 0 :(得分:5)
不确定。 setTimeout
会返回您可以传递给clearTimeout
的值,以便停止超时。
var handle = setTimeout(function () {
alert("Oh noes, I ran!")
}, 5000)
clearTimeout(handle)
答案 1 :(得分:0)
您可以使用clearTimeout功能:
$(".loader").html('Loading');
$(".loader").show();
var timerId= setTimeout(function () {
if ($('.loader').is(":visible")) {
$(".loader").html('Click <a href="javascript:location.reload()">here</a> to reload.</span>');
}
}, 15000);
$(".stop").click(function () {
clearTimeout(timerId);
$(".loader").html("done");
});
看到这个小提琴:http://jsfiddle.net/KaNUP/
答案 2 :(得分:-1)
我建议缩短一段时间(1秒)并在你调用的函数内增加计数器。然后您可以在成功加载或计数器阈值时退出,以较早者为准。