2016-02-02 1 views
1

В настоящее время я использую jQuery Idle Timeout в моей системе Laravel 5.2.
Он работает отлично на моем локальном компьютере (MAMP Pro), но когда я загрузил его на сервер разработки, то AJAX получить запрос дает «Aborted» Ошибка: jQuery AJAX request Aborted error in Laravel 5.2 jQuery AJAX прерван в Laravel 5.2 с использованием jQuery idle timeout

Что, кажется, проблема?

Laravel Маршруты Код:

Route::get('/keepalive', function() { 
    return view('keepalive'); 
}); 

JQuery Код:

$(function() { 
// dialog is in the main layout after login = admin.blade.php 
$("#dialog_session_timeout").dialog({ 
    autoOpen: false, 
    modal: true, 
    width: 400, 
    height: 200, 
    closeOnEscape: false, 
    draggable: false, 
    resizable: false, 
    buttons: { 
     'Yes, Keep Working': function() { 
      $(this).dialog('close'); 
     }, 
     'No, Logoff': function() { 
      // fire whatever the configured onTimeout callback is. 
      // using .call(this) keeps the default behavior of "this" being the warning 
      // element (the dialog in this case) inside the callback. 
      $.idleTimeout.options.onTimeout.call(this); 
     } 
    } 
}); 
// cache a reference to the countdown element so we don't have to query the DOM for it on each ping. 
var $countdown = $("#dialog-countdown"); 
var _token = $('meta[name="csrf-token"]').attr('content'); 
var data = { 
    '_token': _token 
}; 
$.ajaxSetup({ 
    headers: { 
     'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') 
    } 
}); 

// start the idle timer plugin 
$.idleTimeout('#dialog_session_timeout', 'div.ui-dialog-buttonpane button:first', { 
    //idleAfter: 5, // in seconds 
    idleAfter: 7170, // 2 hours minus 30 seconds. 2 hours in the config/sessions.php 
    pollingInterval: 10, 
    //keepAliveURL: base_url + '/keepalive.php', 
    keepAliveURL: base_url + '/keepalive', 
    data: data, 
    serverResponseEquals: 'OK', 
    onTimeout: function() { 
     window.location = "logout"; 
    }, 
    onIdle: function() { 
     $(this).dialog("open"); 
    }, 
    onCountdown: function(counter) { 
     $countdown.html(counter); // update the counter 
    } 
}); 
+0

Какова ценность 'base_url'? – srph

+0

@srph IP-адрес с портом 8080, как 123.456.789.222:8080 – marknt15

+0

Можете ли вы попробовать установить 'AJAXTimeout' как минимум на' 1000'? Я знаю, что это звучит глупо, потому что 'AJAXTimeout' по умолчанию -' 250' (в то время как ваши запросы находятся под '250'). Но давайте просто попробуем :) – srph

ответ

1

Я также столкнулся с такого рода проблемы, которая работает нормально локально, а не на сервере производства. Ошибка бросает из опции Ajax

timeout

вариант AJAXTimeout в JQuery-плагин idletimeout 250 (мс) по умолчанию, который когда-то низкое для запроса. Вам необходимо либо явно указать опцию «AJAXTimeout» в инициализации idletimeout, как:

// start the idle timer plugin 
$.idleTimeout('#dialog_session_timeout', 'div.ui-dialog-buttonpane button:first', { 
    idleAfter: 7170, // 2 hours minus 30 seconds. 2 hours in the config/sessions.php 
    AJAXTimeout: 2000, // instead of 250 ms 
    pollingInterval: 10, 
    keepAliveURL: base_url + '/keepalive', 
    //data: data,  // no option like this exist in idletimeout plugin 
    serverResponseEquals: 'OK', 
    onTimeout: function() { 
     window.location = "logout"; 
    }, 
    onIdle: function() { 
     $(this).dialog("open"); 
    }, 
    onCountdown: function(counter) { 
     $countdown.html(counter); // update the counter 
    } 
}); 

или перейти к файлу «jquery.idletimeout.js» и комментарий опцию тайм-аута в Ajax запроса, как показано ниже:

$.ajax({ 
    //timeout: options.AJAXTimeout, 
    url: options.keepAliveURL, 
    error: function(){ 
     self.failedRequests--; 
    }, 
    success: function(response){ 
     if($.trim(response) !== options.serverResponseEquals){ 
      self.failedRequests--; 
     } 
    }, 
    complete: function(){ 
     if(recurse){ 
      self._startTimer(); 
     } 
    } 
}); 

ПРИМЕЧАНИЕ: вы не можете установить атрибут «данные» в параметрах idletimeout, вместо этого вы можете установить его в запросе ajax, который существует в файле jquery.idletimeout.js, но вам не нужно устанавливать эту опцию на самом деле. :)

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

  • Нет связанных вопросов^_^