Ошибки отсутствия сзязи с сервером
Добрый день. Страница сайта обновляется с помощью 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 есть параметр Цитата:
|
Часовой пояс GMT +3, время: 09:58. |