Ошибки отсутствия сзязи с сервером
Добрый день. Страница сайта обновляется с помощью ajax запросов, когда связь с сервером прерывается(например на тех обслуживание) сыпятся такие ошибки:
GET 503 (Service Unavailable); AJAX 503 (Service Unavailable); GET net::ERR_CONNECTION_REFUSED; AJAX net::ERR_CONNECTION_REFUSED; AJAX 500 (Internal Server Error); Например код выглядит так:
function update (){
$.ajax({
type: 'ajax',
url: 'путь к файлу',
dataType: 'json',
success: function(data){
//работа с data
},
error: function(){
console.log('error');
}
});
}
setInterval(function() {
update ()
}, 1000);
Как дописать в функции update() например :
function update (){
if(есть связь с сервером){
$.ajax({
type: 'ajax',
url: 'путь к файлу',
dataType: 'json',
success: function(data){
//работа с дата
},
error: function(){
console.log('error');
}
});
} else{
console.log('Нет связи с сервером');
}
}
|
Artur_Hopf,
:-? Вам что, стандартной обработки ошибок недостаточно?
error: function(xhr, status, error) {
// handle error
}
|
Dilettante_Pro,
И как мне написать? :-? :
error: function(xhr) {
(xhr.status == 503) ? не выполнять запрос : выполнять запрос;
}
|
Dilettante_Pro,
Есть функция statusCode, если она вызвала 503 то как остановить дальнейшее выполнение опроса?
$.ajax({
statusCode: {
503: function(){
}
},
type: 'ajax',
url: 'путь к файлу',
dataType: 'json',
success: function(data){
//работа с дата
}
});
|
Artur_Hopf,
Запрос не смог выполниться, прервался и вернул ошибку. Он уже остановлен. |
Dilettante_Pro,
В целом понял спасибо. Просто если с сервером нет связи продолжительное время, то у клиента все виснет и не обновляется даже после появления связи с сервером. Наверное в сторону php копать.:-? |
Цитата:
Кстати, ошибка 503 может возникать по той причине, что вы слишком часто посылаете запросы. |
Цитата:
Можно посылать новые запросы не по setInterval, а из разделов success или error - Тогда, пока запрос не остановился, новый не отправится. |
Dilettante_Pro,
Нет, просто во время тех обслуживания сервера появляются проблемы, пытался решить остановом ajax запроса пока сервер недоступен. Вроде как setInterval не останавливать, а просто прекращать выполение ajax запроса, например вот так:
var stop;
function update (){
if(stop)
$.ajax({
type: 'ajax',
url: 'путь к файлу',
dataType: 'json',
success: function(data){
//работа с data
},
error: function(){
stop = false;
}
});
}
Но если так прерывать ajax запрос, то при включении сервера ajax запрос не начнет работу. :-? Должно быть просто решение, но не могу его найти. |
В вашем способе по ошибке stop = false; и никогда больше не становится true
У ajax есть параметр Цитата:
|
Если вам нужно, чтобы запросы шли один за другим
function update (){
$.ajax({
type: 'ajax',
url: 'путь к файлу',
timeout: 1000;
dataType: 'json',
success: function(data){
//работа с data
update();
},
error: function(){
update();
}
});
}
update();
И никаких setInterval !!! Если нужно, чтобы запросы шли с временным промежутком, можно update() в success и error запускать из setTimeout |
| Часовой пояс GMT +3, время: 22:02. |