使用Ajax功能的页面不会刷新数据
我的脚本工作得很好。但是,内容不会自行刷新以获取新数据。为什么这样?使用Ajax功能的页面不会刷新数据
function updateMsg() {
$.ajax({
url: "/recent/notifications/",
cache: false,
success: function(html){
$("#profile_notifarea_msgbox").html(html);
}
});
setTimeout('updateMsg()', 4000);
}
updateMsg();
你的setTimeout可以直接引用updateMsg而不是使用一个字符串:
var timeout;
function updateMsg() {
$.ajax({
url: "/recent/notifications/",
cache: false,
success: function(html){
$("#profile_notifarea_msgbox").html(html);
timeout = setTimeout(updateMsg, 4000);
}
});
}
updateMsg();
function stopUpdate() {
clearTimeout(timeout);
}
要停止连续更新保存在一个变量的setTimeout的参考,然后调用clearTimeout并传入变量。在这个例子中,你只需调用函数stopUpdate()来取消更新。
如果将updateMsg()放入成功回调,这不就够了吗?我假设这个想法是在数据返回后更新页面,这样你可以一起消除超时。 – Luke 2011-03-25 15:55:41
@Luke然后一旦得到结果,它会立即再次调用。取决于网络服务器的响应速度有多快,它可能会每秒发射多次Ajax请求。 – 2011-03-25 15:57:14
@infernal你的代码和我的代码有什么区别?我确实有$(document).ready也只是它太长了才把它放在这里 – 2011-03-25 16:11:58
当您使用jQuery的阿贾克斯试图始终把误差函数,这样你可以找出如果事情是错的请求
更多细节?你的内容不刷新?我不明白。 – 2011-03-25 15:48:59
不应该有任何区别,但你的“setTimeout”调用可以只是'setTimeout(updateMsg,4000);'。 FireBug针对ajax调用的响应显示了什么? – Pointy 2011-03-25 15:50:29
...是否有新的数据要显示? – rockerest 2011-03-25 15:50:45