Как отобразить ошибку на веб-странице в случае сбоя вызова AJAX (например, ошибка тайм-аута)

#jquery #ajax #timeout

#jquery #ajax #тайм-аут

Вопрос:

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

Я не знаю точного Ajax-кода для этого.

Код, который я пробовал до сих пор, является:

 $.ajax({
       type: 'get',
       url: '/tasks',
       timeout: (5000),
       success: function(){
          alert('success'); 
       },
       error: function(objAJAXRequest, strError){
          abort("Error! Type: "  strError);
       }
});
  

Когда я завершаю работу сервера (после загрузки самой страницы!), этот AJAX-вызов должен отображать сообщение об ошибке, а при перезапуске сервера он должен правильно ответить на запрос.

Комментарии:

1. Вы имеете в виду, что вы останавливаете сервер, он должен выдать ошибку, затем вы запускаете сервер снова, и он показывает сообщение об успешном завершении, без повторного запуска вызова? Я не думаю, что это возможно.

2. Чтобы добавить к тому, что сказал Феликс, запрос AJAX отправляется в местоположение на том же сайте, поэтому, если сервер остановлен, веб-сайт все равно не будет виден? Пожалуйста, поправьте меня, если я неправильно понял, что вы имеете в виду.

3. может быть сбой, я просто хочу отправить сообщение об ошибке на запрошенную страницу в случае недоступности сервера

4. Вы должны написать свой собственный метод повторной попытки сервера, если исходный запрос завершается неудачей, потому что Jquery этого не предоставляет.

Ответ №1:

Просто мое теоретическое предположение, вы можете сделать это с помощью функции setTimeout

 $(document).ready(function() {
  setTimeout( ajaxPoll, 5000);
});

function ajaxPoll(){
  $.ajax({
       type: 'get',
       url: '/tasks',
       success: function(){
          $('alertWindow').hide(); 
       },
       error: function(objAJAXRequest, strError){
          $('alertWindow').show();
       }
  });
}
  

Также это означает, что вы не можете использовать оповещение модального окна, это должен быть только элемент DOM.