기본적인 오류 처리를 추가하기 위해 jQuery의 $ .getJSON을 사용하여 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 일 때이 질문이 요청되었다고 추가하고 싶습니다.