【发布时间】:2011-08-04 08:30:15
【问题描述】:
我的 Rails 应用程序出现间歇性问题,我无法弄清楚发生了什么。当用户登录时,他们会看到一个仪表板,其中包含一些执行 AJAX 调用的 JavaScript 代码。有时,当用户登录时,他们看到的不是仪表板,而是来自操作的 JSON 响应文本,而不是仪表板(在 Chrome 中),或者他们下载了一个 .json 文件(Firefox)。它是间歇性的,通常不会发生,但当它发生时真的很烦人。
以下是部分代码的简化版本:
在模板头部运行的JS:
$(function () {
var remoteLink = $('#remoteLink');
remoteLink.live("ajax:complete", function () {
setTimeout(function () {
loadCount();
}, 30000);
});
loadCount();
function loadCount() {
remoteLink.click();
}
});
以及模板中的链接:
<%= link_to 'get count (hidden)', {:controller => 'something', :action => 'count'},
:id => 'remoteLink', :class => 'hidden', :remote => true, 'data-type' => 'json' %>
控制器动作:
def count
render :json => get_counts_function_returning_a_hash
end
我的预感是这是一种竞争条件——可能与 setTimeout 的使用有关? ——但我无法验证这种预感。谁能告诉我这里可能发生了什么?我也在其他网站上看到过这种情况——也是间歇性的,通常不会发生,但发生时很烦人。
【问题讨论】:
标签: javascript ruby-on-rails ajax jquery