在带有 turbolink 的 Rails 中使用 jQuery 进行长轮询
Posted
技术标签:
【中文标题】在带有 turbolink 的 Rails 中使用 jQuery 进行长轮询【英文标题】:Long polling using jQuery in Rails with turbolink 【发布时间】:2013-03-02 07:37:14 【问题描述】:我正在按照说明使用 jQuery AJAX 请求 here 创建长轮询。 以下是我的代码:
:javascript
(function poll()
$.ajax( url: $("comment").data("url"), success: function(data)
alert(data.comment);
, dataType: "json", complete: poll, timeout: 8000 );
)();
但这段代码不是超时 8 秒,而是连续轮询。我做错了什么,或者这是否与我在 Rails 3.2 中使用的 turbolink
gem 冲突?
谢谢。
【问题讨论】:
【参考方案1】:为什么会再次轮询,因为您在完成回调中再次调用函数 poll
(function poll()
$.ajax( url: $("comment").data("url"), success: function(data)
alert(data.comment);
, dataType: "json", complete: poll, timeout: 8000 );
-----------------------------------------^ //here
)();
也不要混淆timeout
和setTimeout
,这里的timeout表示如果ajax调用在8秒内没有返回就会触发错误回调
LIVE DEMO
【讨论】:
以上是关于在带有 turbolink 的 Rails 中使用 jQuery 进行长轮询的主要内容,如果未能解决你的问题,请参考以下文章
带有 mmenu/sidr 和 Jquery 和 Turbolinks 问题的 Rails
带有 Rails 4.2.0 的 Fotorama jQuery Gallery(Turbolinks 问题)
在 Rails 4 中使用 Foundation 和 Turbolinks 时遇到问题