为了添加一些基本的错误处理,我想重写一段使用 jQuery $的代码。获取来自 Flickr 的一些照片。这样做的原因是。GetJSON 不提供错误处理或使用超时。
由于 $. getJSON 只是一个包装 $. ajax 的包装器,所以我决定重写这个东西,让人惊讶的是,它完美地工作了。
现在好戏开始了。当我故意导致404(通过更改 URL)或导致网络超时(通过不连接到互联网)时,错误事件根本不会触发。我不知道自己哪里做错了。非常感谢你的帮助。
密码是这样的:
$(document).ready(function(){
// var jsonFeed = "http://api.flickr.com/services/feeds/photos_public.gne"; // correct URL
var jsonFeed = "http://api.flickr.com/services/feeds/photos_public.gne_______"; // this should throw a 404
$.ajax({
url: jsonFeed,
data: { "lang" : "en-us",
"format" : "json",
"tags" : "sunset"
},
dataType: "jsonp",
jsonp: "jsoncallback",
timeout: 5000,
success: function(data, status){
$.each(data.items, function(i,item){
$("<img>").attr("src", (item.media.m).replace("_m.","_s."))
.attr("alt", item.title)
.appendTo("ul#flickr")
.wrap("<li><a href=\"" + item.link + "\"></a></li>");
if (i == 9) return false;
});
},
error: function(XHR, textStatus, errorThrown){
alert("ERREUR: " + textStatus);
alert("ERREUR: " + errorThrown);
}
});
});
我想补充一点,这个问题是在 jQuery 1.4.2版时提出的