JQuery не может обработать ошибку 404 с Twitter API - PullRequest
3 голосов
/ 10 ноября 2011

Ниже мой код

var tweetid = '133450847156838400';
        $.ajax({
                dataType: "jsonp",
                url: "http://api.twitter.com/1/statuses/show/"+tweetid+".json?include_entities=1&callback=?",
                error:function(xhr, testStatus, error) {
                    alert("error");
                },
                success: function(html){
                    alert("success");
                }
            });

Консоль Chrome показывает сообщение об ошибке 404, но jQuery не может вызвать предупреждение.

Я добавил

        $(document).ajaxError(function(event, request, settings){
            alert('error');
        });

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

Ответы [ 2 ]

2 голосов
/ 10 ноября 2011

Я почти уверен (не полностью), что dataType jsonp неправильно обрабатывает не-200 http коды состояния. Причина в том, что JSONP на самом деле работает. На странице википедии это объясняется лучше: http://en.wikipedia.org/wiki/JSONP,, но в основном jsonp означает добавление элемента script на страницу с указанным вами URL. И тело элемента script является вызовом функции. Если вы получите какой-либо код состояния! = До 200, то этого тела не будет, и никакая функция не будет вызываться (которая в конечном итоге вызывает функции обратного вызова).

Итак, если вы продолжите использовать jsonp, вам понадобится какой-то тайм-аут в ожидании ответа и ожидание сбоя запроса или какой-либо другой метод.

1 голос
/ 10 ноября 2011

Страница jQuery.fn.ajax () объясняет, что error: fxn() не вызывается при использовании jsonp. Вот реклама:

Примечание. Этот обработчик не вызывается для междоменного сценария и JSONP. Запросы. Это Ajax Event.

Единственное решение, о котором я слышал в этом случае, - это использование прокси-сервера, который обходит такую ​​же политику происхождения и позволяет использовать обратные вызовы ошибок. Я никогда не пробовал этого, и не чувствую, что могу дать вам совет, как это сделать;)

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