Javascript 我得到;“未定义功能”;在jQuery中使用setInterval。为什么?
我正在尝试使用jQuery更新用户字段 我的代码是Javascript 我得到;“未定义功能”;在jQuery中使用setInterval。为什么?,javascript,jquery,Javascript,Jquery,我正在尝试使用jQuery更新用户字段 我的代码是 jQuery(document).ready(function(){ setInterval("imStillAlive()", 6000); function imStillAlive() { jQuery.post('/users/update_useractive', function(data){ alert("updated"); });//post } });
jQuery(document).ready(function(){
setInterval("imStillAlive()", 6000);
function imStillAlive() {
jQuery.post('/users/update_useractive',
function(data){
alert("updated");
});//post
}
});
上面的代码在运行时显示错误
“imstilllive”未定义
如何解决这个问题?这里有几个问题
在内部调用“imStillAlive()”
类型函数。不要那样做eval()
- 您正在
中发布。你难道不想在再次打电话之前知道邮件已经结束了吗setInterval()
- 您没有进行任何DOM操作,因此不要等待DOM就绪
对于函数来说是一个非常糟糕的名字imStillAlive()
- 现在,这是一个有点有形的,但如果这是用来确定用户是否仍然活跃在您的网站上,是不是有点太频繁6秒更新您的数据库?此外,如果有人打开浏览器,这不会不必要地占用资源吗?如果很多用户都打开浏览器,这不是你自己的问题吗P
(function($) {
(function update() {
setTimeout(function() {
$.post('/users/update_useractive',
function(data){
alert("updated");
update();
});
}, 6000);
})();
})(jQuery);
尝试这个解决方案,正如Alex提到的,不需要在document.ready中编写它,因为您没有进行任何DOM操作
setInterval(function(){
imStillAlive();
}, 6000);
function imStillAlive() {
jQuery.post('/users/update_useractive',
function(data){
alert("updated");
});//post
}
唯一的问题是,如果帖子在接下来的6秒钟内还没有完成,它会再次发布。被接受的答案并没有反映:P哦,我想你可以说一篇耗时超过6秒钟的帖子是一种边缘案例。我很惊讶。。。在接受答案之前,接受者应该已经阅读了评论。Chinmayee,Alex的解决方案不使用(文档)。准备好了。(函数($){})(jQuery);是一个自动执行的匿名函数。