Javascript setTimeout显示重新加载div之前的剩余时间-AJAX
我正在编写一个脚本,以便在AJAX脚本加载失败后7秒钟内重试它。 有没有办法在setTimeout中显示timeleft 这是我的基本脚本:Javascript setTimeout显示重新加载div之前的剩余时间-AJAX,javascript,ajax,settimeout,Javascript,Ajax,Settimeout,我正在编写一个脚本,以便在AJAX脚本加载失败后7秒钟内重试它。 有没有办法在setTimeout中显示timeleft 这是我的基本脚本: function update() { $.ajax({ type: 'GET', url: 'messageContent.php', timeout: 1000, success: function (data) { $("#chatBox").html(d
function update() {
$.ajax({
type: 'GET',
url: 'messageContent.php',
timeout: 1000,
success: function (data) {
$("#chatBox").html(data);
document.getElementById('messages').scrollTop = document.getElementById('messages').scrollHeight;
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
var d = document.getElementById("loadcon");
d.innerHTML = '<div class="loadingAnimation"><h3 class="status">Reconnecting...</h3></div>';
setTimeout (update, 7000);
}
});
}
函数更新(){
$.ajax({
键入:“GET”,
url:'messageContent.php',
超时:1000,
成功:功能(数据){
$(“#聊天室”).html(数据);
document.getElementById('messages').scrollTop=document.getElementById('messages').scrollHeight;
},
错误:函数(XMLHttpRequest、textStatus、errorshown){
var d=document.getElementById(“loadcon”);
d、 innerHTML='重新连接…';
setTimeout(更新,7000);
}
});
}
尝试使用函数执行计时器并在处理程序上调用它
像这样:
function startCounter(timeLeft) {
if (timeLeft > 0) {
..display timeLeft
setTimeout (function() {startCounter(timeLeft-1); }, 1000);
}
else{
..your function to retry
}
}
希望有帮助:)它可能足够精确,可以使用setInteval并让它运行7次迭代,或者直到时间过期(保存一个日期对象,并与当前时间vs 7000进行比较)。您必须以更短的时间间隔运行另一个计时器,以便能够进行某种倒计时。您可以在启动第一个计时器时节省时间,在第二个计时器上,只需计算剩余时间并显示它。或者,您可以在更短的时间间隔内使用一个重复计时器,并在触发更新之前计算它触发的次数(例如,每秒钟更新一次倒计时,在7次更新之后,然后调用您的更新)。它可以工作,谢谢。。但我遇到了另一个问题:(如果在完成最后一个计数器之前再次触发update(),计数器会发疯。仍在理解这个新问题吗