Jef*_*eff 5 javascript ajax jquery ruby-on-rails
我在Rails应用程序中遇到了一个间歇性问题,而且我无法弄清楚发生了什么.当用户登录时,他们会看到一个仪表板,其中包含一些JavaScript代码,用于对操作执行AJAX调用.有时,当用户登录时,他们不会看到仪表板,而是从操作而不是仪表板(在Chrome中)看到JSON响应文本,或者他们下载.json文件(Firefox).它是间歇性的,通常不会发生,但它确实发生时真的很烦人.
这是一些代码的愚蠢版本:
JS在模板头中运行:
$(function () {
var remoteLink = $('#remoteLink');
remoteLink.live("ajax:complete", function () {
setTimeout(function () {
loadCount();
}, 30000);
});
loadCount();
function loadCount() {
remoteLink.click();
}
});
Run Code Online (Sandbox Code Playgroud)
以及模板中的链接:
<%= link_to 'get count (hidden)', {:controller => 'something', :action => 'count'},
:id => 'remoteLink', :class => 'hidden', :remote => true, 'data-type' => 'json' %>
Run Code Online (Sandbox Code Playgroud)
和控制器动作:
def count
render :json => get_counts_function_returning_a_hash
end
Run Code Online (Sandbox Code Playgroud)
我的预感是,它是一种竞争条件 - 可能与使用setTimeout有关? - 但我无法证实这种预感.谁能告诉我这里会发生什么?我也在其他网站上看到过这种情况 - 也是间歇性的,一般不会发生,但是当它发生时会很烦人.
您是否有任何身份验证代码,可以使用 store_location 或类似功能在用户登录后将用户重定向到特定页面?
我曾经遇到过类似的问题,AJAX 回调导致 store_location 存储 JSON URL,并且用户被重定向到 JSON 响应而不是仪表板。这很难追踪,因为用户必须在页面上闲置一段时间才能发现错误。
无论如何,我怀疑这是类似的问题,而不是 Rails 的问题。
| 归档时间: |
|
| 查看次数: |
1605 次 |
| 最近记录: |