jQuery: обрабатывать ошибки в getJSON ()? - PullRequest
22 голосов
/ 22 марта 2011

Как мне обработать 500 ошибок при использовании jQuery's getJSON ?

Была пара вопросов об обработке ошибок с getJSON() и JSONP , но я не работаю с JSONP, просто обычный JSON.

Другой ответ предлагает использовать .ajaxSetup() перед вызовом getJSON(), поэтому я попробовал это:

$.ajaxSetup({
  "error":function() {   
    alert('Error!');
}});
$.getJSON('/book_results/', function(data) { # etc

Но я обнаружил, что предупреждение всегда срабатывает, даже когда результат хорошо сформирован.

Есть идеи?

Ответы [ 5 ]

25 голосов
/ 22 марта 2011

Метод getJSON изначально не возвращает ошибок, но вы можете погрузиться в объект xhr, который возвращается в качестве параметра в обратном вызове.

Метод getJSON является сокращенной функцией для jQuery.ajax,Используя jQuery.ajax, вы можете легко добиться обработки ошибок:

  $.ajax({
    url: 'http://127.0.0.1/path/application.json',
    dataType: 'json',
    success: function( data ) {
      alert( "SUCCESS:  " + data );
    },
    error: function( data ) {
      alert( "ERROR:  " + data );
    }
  });
10 голосов
/ 13 сентября 2012

Если вы используете jquery версии 1.5 или выше, вы можете использовать новые методы .success (функция), .error (функция) и .complete (функция)

Пример из http://api.jquery.com/jQuery.get/

// Assign handlers immediately after making the request,
// and remember the jqxhr object for this request
var jqxhr = $.get("example.php", function() {
  alert("success");
})
.success(function() { alert("second success"); })
.error(function() { alert("error"); })
.complete(function() { alert("complete"); });

// perform other work here ...

// Set another completion function for the request above
jqxhr.complete(function(){ alert("second complete"); });

Прекрасно работает для меня. Я надеюсь, что это поможет

8 голосов
/ 31 июля 2013

вы можете увидеть это на jquery api getJSON: http://api.jquery.com/jQuery.getJSON/

$.getJSON(url).done(function(data){
   $("#content").append(data.info);
})
.fail(function(jqxhr){
   alert(jqxhr.responseText);
});

// jquery1.5 + обратный вызов сбоя сработает, когда текст не является правильной строкой json илилюбые другие неудачные решения

0 голосов
/ 08 сентября 2017

Использование jQuery 3.2.1:

$.getJSON('/api/feed/update', function (data) {
    console.log(data);
}).catch(function (jqXHR, textStatus, errorThrown) {
    console.error(jqXHR);
    console.error(textStatus);
    console.error(errorThrown);
});
0 голосов
/ 09 марта 2012

Пожалуйста, сделайте следующее. Псевдо-код:

$.getJSON('/path/to_your_url.do?dispatch=toggle&'  + new Date().getTime(),    function(data, status, xhr){

    if( xhr.status == 200 )
      // all good and do your processing with 'data' parameter( your response)
    else { 
      //error - check out the values for only in chrome for 'console'
     console.log(xhr.status);
     console.log(xhr.response);
     console.log(xhr.responseText)
     console.log(xhr.statusText);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...