Pour ajouter une gestion des erreurs de base, je voulais réécrire un morceau de code qui utilisait $ .getJSON de jQuery pour extraire des photos de Flickr. La raison de cela est que $ .getJSON ne fournit pas de gestion des erreurs ni ne fonctionne avec les délais d'expiration.
Puisque $ .getJSON n'est qu'un wrapper autour de $ .ajax, j'ai décidé de réécrire la chose et de surprendre la surprise, cela fonctionne parfaitement.
Maintenant, le plaisir commence cependant. Lorsque je provoque délibérément un 404 (en modifiant l'URL) ou que le réseau expire (en n'étant pas connecté aux interwebs), l'événement d'erreur ne se déclenche pas du tout. Je ne sais pas ce que je fais de mal. L'aide est très appréciée.
Voici le code:
$(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);
}
});
});
Je voudrais ajouter que cette question a été posée lorsque jQuery était à la version 1.4.2