Функция JQuery getJSON - PullRequest
       13

Функция JQuery getJSON

3 голосов
/ 23 октября 2009

Я использую следующий код, чтобы получить json-фид друзей твиттера с помощью твиттер-интерфейса:

var url = "http://twitter.com/statuses/friends/"+twitter_handle+".json?callback=?";

//show ajax loading animation
$('#loading').show();

$.getJSON(url, function(data) {
   //hide ajax loading animation 
   $('#loading').hide();
   //Processing the JSON here
   //...
}); 

Это работает, когда дескриптор твиттера действителен. Но если он недействителен, т.е. когда такого пользователя в твиттере не существует, определенная мной функция обратного вызова не выполняется, и анимация загрузки ajax не скрывается.

Итак, есть ли способ определить в коде, не выполняется ли запрос на фид json, а затем скрыть загрузочную анимацию?

Спасибо.

Ответы [ 2 ]

1 голос
/ 23 октября 2009

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

http://docs.jquery.com/Ajax/jQuery.getJSON говорит:

функция обратного вызова (необязательно) Функция
Функция, выполняемая при успешной загрузке данных.

function (data, textStatus) {
  // data will be a jsonObj
  // textStatus will be one of the following values: 
  //   "timeout","error","notmodified","success","parsererror"
  this; // the options for this ajax request
}

Редактировать Рабочий пример спасибо go jQuery ajax (jsonp) игнорирует тайм-аут и не генерирует событие ошибки .

        var twitter_handle = 'FakePersonx';
        var url = "http://twitter.com/statuses/friends/"+twitter_handle+".json?callback=?";

        $.jsonp({
            type: "GET",
            url: url,
            data: {},
            async:true,
            contentType: "application/json; charset=utf-8",
            dataType: "jsonp",
            success: function(data) {
                alert(data);
            },
            error: function (XMLHttpRequest, textStatus, errorThrown) {
                alert('error');
            },
            beforeSend: function (XMLHttpRequest) {
                alert('Before Send');
                $('#loading').show();
            },
            complete: function (XMLHttpRequest, textStatus) {
                alert('Complete');
                $('#loading').hide();
            }
});
1 голос
/ 23 октября 2009

ccallback может возвращать 2 аргумента, один из которых является textStatus, с которым вы можете проверить.

$.getJSON(url, function (data, textStatus) {
  // data will be a jsonObj
  // textStatus will be one of the following values: 
  //   "timeout","error","notmodified","success","parsererror"
  this; // the options for this ajax request
}

через: http://docs.jquery.com/Ajax/jQuery.getJSON

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...