2015-09-23 5 views
0

не может предупредить $ getJSON .fail:

this.flickrPics = ko.observableArray(); 
ko.computed(function() { 

    $.getJSON(
     'https://api.flickr.com/services/feeds/photos_public.gne?jsoncallback=?', 
     { 
      tags : data.name, 
      format : 'json' 
     }) 
    .done(function(response) { 
      for (var i = 0; i < 10; i++) { 
       self.flickrPics.push(response.items[i].media.m); 
      } 
    }) 
    .fail(function(error) { 
     alert(error + 'error'); 
     // $('.pics-box h2').text("sorry, pictures cant be loaded at the moment"); 
    }); 

}, this); 

Все работает отлично подходит для .fail кроме. Если я испортил URL-адрес, ничего не происходит, получайте только консольные ошибки неудачных вызовов ajax. Что я делаю не так?

+0

запросы JSONP не всегда вызывают ошибки из-за того, как JSONP запросов сделаны с помощью тегов сценария. Единственным обходным решением является использование jQuery 2.x или отправка/обработка запросов jsonp самостоятельно. –

ответ

1

Чтобы сохранить совместимость со старыми браузерами, jQuery 1.11.x использует .onreadystatechange для отслеживания, когда запрос jsonp вернулся. Из-за этого невозможно отслеживать ошибки, отличные от ошибок таймаута при отправке запросов сценария или jsonp.

Чтобы обойти это, вы должны использовать jQuery 2.x в современных браузерах и только в том числе 1.11.x в старых браузерах, чтобы большинство пользователей получало лучшую обработку ошибок. Единственный способ исправить это для других пользователей - это не использовать jQuery для отправки этого запроса и вместо этого создать собственный тег сценария и найти способ отслеживания успеха/ошибки, который работает во всех поддерживаемых браузерах. Или вы можете проксировать этот запрос на своем сервере и выполнять обычный запрос XMLHTTP.

https://github.com/jquery/jquery/blob/1.11.3/src/ajax/script.js#L57

https://github.com/jquery/jquery/blob/2.1.3/src/ajax/script.js#L44

+0

related: http://stackoverflow.com/questions/32640229/catching-403-from-ajax-promise-in-jquery-v1-x/32655237#32655237 –

+0

спасибо за информацию ребята – givehug

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

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