<meta http-equiv="Refresh" Content="5">
Run Code Online (Sandbox Code Playgroud)
此脚本每5秒后重新加载或刷新页面.但我想用jQuery和AJAX调用来做.可能吗?
dre*_*ish 271
正如其他人指出的那样,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);
});
})();
Run Code Online (Sandbox Code Playgroud)
为简单起见,我使用成功回调进行调度.这样做的缺点是一个失败的请求将停止更新.为避免这种情况,您可以使用完整的回调:
(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);
}
});
})();
Run Code Online (Sandbox Code Playgroud)
Tah*_*aza 33
是的,您可以使用JavaScript setTimeout()方法或setInterval()方法来调用您想要运行的代码.以下是使用setTimeout执行此操作的方法:
function executeQuery() {
$.ajax({
url: 'url/path/here',
success: function(data) {
// do something with the return value here if you like
}
});
setTimeout(executeQuery, 5000); // you could choose not to continue on failure...
}
$(document).ready(function() {
// run the first time; all subsequent calls will take care of themselves
setTimeout(executeQuery, 5000);
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
141181 次 |
| 最近记录: |