4

注意:我已经检查了其他答案,包括这个问题 re: a pre-jQuery 1.5 JSONP error issue that now has been resolved。我正在使用 JQuery 1.7,我相信它不会受到这个问题的影响。

JQuery 1.5开始,JSONP 可以使用正确的错误函数(参见“jqXHR 对象”)。但是错误功能似乎没有被触发。

$.getJSON(url, function(response) { 
    console.log(response)   
}).error( function() { console.log('Error occurred.') } )   

查看 Chrome 开发工具,JSONP 请求会生成以下错误:

GET https://twitter.com/status/user_timeline/somepretendusername.json?count=2&callback=jQuery171005595548846758902_1334772179012&_=1334772179132 400 (Bad Request)

但是 .error() 回调似乎根本没有运行。使用 JSONP 进行正确的错误处理需要什么?

4

1 回答 1

2

错误功能仅在请求出现错误时触发。正在发出请求,但如果用户名不存在,Twitter 会返回 400。我尝试使用假用户名并得到与您相同的响应,但后来我使用了我的用户名,它就像一个冠军一样工作。

[编辑] 我看到您只是在询问如何使用 JSONP 处理错误。无论出于何种原因,jQuery 似乎都没有对此进行良好的错误处理。我确实找到了一个承诺对 JSONP 进行实际错误处理的插件。在这里查看。

[edit2]检查一下,它有效!

$(document).ready(function() {
    var url = 'https://twitter.com/status/user_timeline/thisisnotarealtwitterhandle.json?count=2&callback=?';
    var jqxhr = $.jsonp({
        url: url,
        success: function(response) {
            console.log(response)
        }
    }).fail(function() { console.log('error'); });
});
于 2012-04-18T18:26:15.063 回答