На моем сайте я использую длинную функцию jjery ajax.Этот ajax-вызов в этой функции имеет тайм-аут в 50 секунд, а затем снова запускается, ожидая изменений на сервере.
Однако иногда длительный опрос http-соединения прекращается.Это происходит, например, когда интернет-соединение не работает, или когда клиентский компьютер включен после сна или спящего режима.Проблема в том, что «полный» обратный вызов еще не происходит, функция $ .ajax () все еще ожидает тайм-аут, а соединение http больше не существует.
Как проверить с помощьюjquery / javascript, если соединение все еще открыто?
Это мой длинный скрипт опроса:
function longPoller() {
$.ajax({
type: "GET",
url: '/longpolltest2.php',
dataType: 'json',
async: true,
cache: false,
timeout:50000, /* Timeout in ms */
success: function(data){
alert('success');
},
error: function(XMLHttpRequest, textStatus, errorThrown){
alert('error');
},
complete: function() {
alert('complete');
longPoller(); // restart long poller request
}
});
}
@ jAndy, я обновил скрипт, но я получаю следующую ошибку:
Отказано в http://domain.com разрешении на создание оболочки для объекта класса Безымянный класс
function masterLongPollerDebugger() {
xhr = $.ajax({
type: "GET",
url: '/longpolltest2.php',
dataType: 'json',
async: true,
cache: false,
timeout:50000,
success: function(data){
alert('success');
},
error: function(XMLHttpRequest, textStatus, errorThrown){
alert('error');
},
complete: function() {
alert('complete');
masterLongPollerDebugger();
}
});
}
function ajaxRunning() {
xhr._onreadystatechange = xhr.onreadystatechange; // store a reference
xhr.onreadystatechange = function()
{ // overwrite the handler
xhr._onreadystatechange(); // call the original stored handler
alert(xhr.readyState);
if (xhr.readyState === 3)
alert('Interactive');
};
}