2013-09-12 3 views
0

Я использую https://github.com/ehynds/jquery-idle-timeout для создания таймера простоя стиля монетного двора, который выполняет вызов Ajax на странице «keep-alive».jQuery привязка события Ajax

У меня также есть часть Javascript для формы формы Ajax, которая выводит сообщение «Подождите», чтобы предупредить пользователя о том, что активность происходит, хотя страницы не загружаются.

По какой-то причине функция toggleAjaxLoader() привязана к ajax: before и ajax: завершает события каждый раз, когда подсчитывается страница keep alive. Я не хочу этого, поскольку это путаница для пользователя. Почему это должно быть обязательным для idletimeout и/или как я могу развернуть то, что происходит?

Загрузка анимации:

// Toggles our animated ajax loader image 
function toggleAjaxLoader() { 
    jQuery('#ajax_loader').toggle(); 
} 

Idle тайм-аут:

/* 
* Inactivity notifier and auto logout 
*/ 
jQuery(function(){ 
    var redirectToURL = getAbsoluteUrl('/logout/auto=true'); // URL to relocate the user to once they have timed out 
    var keepAlive = getAbsoluteUrl('/keep-alive'); 

    if (jQuery("#idletimeout").length) { 
     $.idleTimeout('#idletimeout', '#idletimeout a', { 
      idleAfter: 2700, // 45 minutes 
      warningLength: 60, // number of seconds to wait before redirecting the user 
      keepAliveURL: keepAlive, 
      AJAXTimeout: 2500, 
      pollingInterval: 5, // 60 
      expiredMessage: 'Your session has expired. You are being logged out for security reasons.', // message to show user when the countdown reaches 0 
      onTimeout: function(){ 
       $(this).slideUp(); 
       window.location.replace(redirectToURL); 
      }, 
      onIdle: function(){ 
       $(this).slideDown(); // show the warning bar 
      }, 
      onCountdown: function(counter){ 
       $(this).find("span").html(counter); // update the counter 
      }, 
      onResume: function(){ 
       $(this).slideUp(); // hide the warning bar 
       // Tums.bump_tums_session(session[:user].session['sessionGuid']); 
      } 
     }); 
    }; 
}); 

ответ

1

Я полагаю, что я нашел свой ответ, это связано с jQuery's global ajax event handlers, которая по умолчанию установлена ​​в положение верно. Я установил это как ложное, он работает как ожидалось.

$.ajaxSetup({ 
    global: false 
}); 
+0

Отлично, я предлагаю вам принять свой собственный ответ – davidkonrad

Смежные вопросы