В моем приложении Rails периодически возникала проблема, и я не мог понять, что происходит.Когда пользователь входит в систему, он видит панель управления, содержащую некоторый код JavaScript, который выполняет AJAX-вызов действия.Иногда, вместо того, чтобы видеть панель мониторинга, когда пользователь входит в систему, он видит текст ответа 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?- но я не смог проверить эту догадку.Может кто-нибудь сказать мне, что здесь происходит?Я видел это в дикой природе и на других сайтах - тоже с перерывами, обычно это не происходит, но раздражает, когда это происходит.