<meta http-equiv="Refresh" Content="5">
此脚本每 5 秒重新加载或刷新页面。但我想使用 jQuery 和 AJAX 调用来完成。可能吗?
最佳答案
正如其他人指出的那样,setInterval 和 setTimeout 可以解决问题。我想强调我从 Paul Irish 的这段优秀视频中学到的更高级的技术:http://paulirish.com/2010/10-things-i-learned-from-the-jquery-source/
对于可能最终花费比重复间隔更长的时间的周期性任务(例如慢速连接上的 HTTP 请求),最好不要使用 setInterval()
。如果第一个请求尚未完成而您启动另一个请求,您可能会遇到多个请求消耗共享资源并互相饿死的情况。您可以通过等到最后一个请求完成后再安排下一个请求来避免此问题:
// Use a named immediately-invoked function expression.
(function worker() {
$.get('ajax/test.html', function(data) {
// Now that we've completed the request schedule the next one.
$('.result').html(data);
setTimeout(worker, 5000);
});
})();
为简单起见,我使用成功回调进行调度。不利的一面是一个失败的请求将停止更新。为避免这种情况,您可以改用完整的回调:
(function worker() {
$.ajax({
url: 'ajax/test.html',
success: function(data) {
$('.result').html(data);
},
complete: function() {
// Schedule the next request when the current one's complete
setTimeout(worker, 5000);
}
});
})();
关于jquery - 如何定期触发 AJAX 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5052543/