javascript - 我在 jQuery 中使用 setInterval 得到 "function not defined"。为什么?

标签 javascript jquery

我正在尝试使用 jQuery 更新用户字段。

我的代码是...

  jQuery(document).ready(function(){
  setInterval("imStillAlive()", 6000);
    function imStillAlive() {

      jQuery.post('/users/update_useractive',
     function(data){
    alert("updated");
     });//post
   }
    });

上面的代码运行时显示错误...

"imStillAlive" not defined

如何解决?

最佳答案

这里有几个问题......

  • "imStillAlive()" 在内部调用一个 eval() 类型的函数。不要那样做。
  • 您在 setInterval() 中发帖。在再次调用之前,您不想知道帖子已经完成吗?
  • 您没有进行任何 DOM 操作,所以不要等待 DOM 准备就绪。
  • imStillAlive() 是一个非常糟糕的函数名称。
  • 现在这个有点有形了,但是如果它被用来确定用户是否仍然在您的网站上活跃,那么 6 秒更新您的数据库是不是有点太频繁了?此外,如果有人让他们的浏览器保持打开状态,这是否会不必要地消耗资源?如果许多用户让他们的浏览器保持打开状态,这不会是你自己在 DOSing 吗? :P

这似乎更好......

(function($) {

    (function update() {
        setTimeout(function() {
            $.post('/users/update_useractive',
               function(data){
                 alert("updated");
                 update();
            });
        }, 6000);
    })();

})(jQuery);

See it on JSFiddle.net

关于javascript - 我在 jQuery 中使用 setInterval 得到 "function not defined"。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4301085/

相关文章:

javascript - 使用 GSAP 制作动画模糊滤镜

javascript - jQuery:不识别 CSS 动画期间设置的值

jquery - Bootstrap 下拉按钮在点击时变成半黑?

javascript - 一周中有多少人注册

javascript - 在具有不同文本大小的 2 个 div 之间同步滚动

javascript - 实现 Rails Frontend 轮询来调用更新

javascript - 停止在每次渲染时调用函数

javascript - Flot 线图和大型 JSON 数据 blob 未格式化为 Flot API 规范

javascript - 单击链接隐藏/显示内容

javascript - Canvas lineTo() 在错误的位置绘制 y 坐标