Để thêm một số xử lý lỗi cơ bản, tôi muốn viết lại một đoạn mã sử dụng $ .getJSON của jQuery để lấy một số ảnh từ Flickr. Lý do của việc này là $ .getJSON không cung cấp khả năng xử lý lỗi hoặc làm việc với thời gian chờ.
Vì $ .getJSON chỉ là một trình bao bọc xung quanh $ .ajax, tôi đã quyết định viết lại điều này và gây ngạc nhiên bất ngờ, nó hoạt động hoàn hảo.
Bây giờ niềm vui bắt đầu mặc dù. Khi tôi cố tình gây ra lỗi 404 (bằng cách thay đổi URL) hoặc khiến mạng hết thời gian chờ (do không được kết nối với các mạng xen kẽ), sự kiện lỗi hoàn toàn không kích hoạt. Tôi bối rối không biết mình đang làm gì sai. Giúp đỡ được nhiều đánh giá cao.
Đây là mã:
$(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);
}
});
});
Tôi muốn nói thêm rằng câu hỏi này đã được hỏi khi jQuery ở phiên bản 1.4.2