2012-03-12 84 views
0

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

我使用萤火,当我重新加载页面的上次调查保持打开状态,并创建一个新的。

 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(); 

回答

2

我敢肯定的原因是,你通过调查为一体的完整功能,有效地创建一个非终端或级联递归(不知道是从编程101适当的期限......)

+0

我刚刚才开始使用投票今天工作,但不是保持民意调查的想法。所以如果添加另一个通知用户被告知? – 2012-03-13 00:09:53

+0

这是轮询的想法,但在您的方法中,完成是轮询本身的一部分,所以如果您从自己调用自己,那就是递归。 您可以用匿名函数尝试 $阿贾克斯({ 齐全:函数(){ 轮询();} , .... }) – Jamgold 2012-03-13 00:29:39

+0

你是正确的。我带走了; complete:poll and added poll();在成功范围内,似乎是没问题的。 谢谢你的帮助。 – 2012-03-13 00:30:46