【问题标题】:Long polling ajax issue长轮询ajax问题
【发布时间】:2012-03-12 23:58:02
【问题描述】:

我已经设置了一个轮询脚本,它基本上检查 notification_queue 是否有任何新的通知可用。如果是,它将显示它们并从队列中删除通知。

我正在使用 firebug,当我重新加载页面时,之前的投票保持打开状态并创建了一个新的。

        function poll(){
        $.ajax({
            url: "test.php",
            dataType: "json",
            complete: poll,
            timeout: 30000,

            success: function(data){
               $.gritter.add({

                    title: 'This is a regular notice!',

                    text: data.message,

                    image: 'http://a0.twimg.com/profile_images/59268975/jquery_avatar_bigger.png',

                    sticky: false,

                    time: ''
               });
            },
            error: function(){
                alert("OMG ERROR");
            }
        });
    };
    poll();

【问题讨论】:

    标签: ajax long-polling


    【解决方案1】:

    我很确定原因是您将 poll 作为完整函数传递,有效地创建了非终止或级联递归(不知道这是否是编程 101 的正确术语......)

    【讨论】:

    • 我今天才刚刚开始进行民意调查,但这不是让民意调查继续进行的想法。那么,如果添加了另一个通知,用户会被告知?
    • 这是轮询的想法,但在你的方法中,完成是轮询本身的一部分,所以如果你从自己那里调用自己,那就是递归。您可以尝试使用匿名函数 $.ajax({ complete: function(){ poll(); }, .... })
    • 你是对的。我拿走了;完成:轮询并添加 poll();在成功区域内,它似乎没问题。感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-24
    • 2013-11-17
    • 2011-04-20
    • 1970-01-01
    • 2012-08-16
    • 2012-05-17
    相关资源
    最近更新 更多