注意:我已经检查了其他答案,包括这个问题:jQuery 1.5 之前的 JSONP 错误问题,现已解决。我正在使用 JQuery 1.7,我相信它不会受到此问题的影响。
从 JQuery 1.5 开始,JSONP 可以实现正确的错误函数(参见"jqXHR 对象")。但是,错误函数似乎没有触发。
$.getJSON(url, function(response) {
console.log(response)
}).error( function() { console.log('Error occurred.') } )
查看 Chrome Dev Tools,JSONP 请求会生成以下错误:
GET https://twitter.com/status/user_timeline/somepretendusername.json?count=2&callback=jQuery171005595548846758902_1334772179012&_=1334772179132 400 (Bad Request)
但是,.error() 回调似乎根本无法运行。我需要什么才能使用 JSONP 进行正确的错误处理?
错误函数仅在请求出错时触发。正在发出请求,但如果用户名不存在,Twitter 会返回 400。我使用假用户名尝试了它,并得到了与您相同的响应,但后来我使用了我的用户名,它就像冠军一样工作。
[编辑] 我看到你只是在问如何处理 JSONP 的错误。无论出于何种原因,jQuery似乎对此没有很好的错误处理。我确实找到了一个插件,它承诺为 JSONP 提供实际的错误处理。在这里查看。
[编辑2] 看看,它有效!
$(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'); });
});