Pourquoi cette fonction ne se charge-t-elle pas après un appel ajax réussi dans jQuery? (mis à jour)

J’utilise le tutoriel ici , qui fonctionnait le mois dernier, mais ce n’est pas le cas maintenant. J’ai copié le code correspondant ci-dessous.

 (function($) { //In case jQuery no conflict is being used $(document).ready(function() { //wait for document ready $("#loaddaold").click(function () { alert("123"); //$( "#duplicateshere" ).empty(); $.ajax({ type: "GET", url: "ajax-oldmessages.php", dataType: "xml", success: xmlParser }); }); }); function xmlParser(xml) { alert("456"); //$("#rev2").slideDown(); $(xml).find("result").each(function () { $("#appendhere").append('' + $(this).find("title").text() + '
'); //$(".book").fadeIn(1000); }); } })(jQuery); // http://www.webdevdoor.com/jquery/javascript-delay-input-field-change/ // http://papermashup.com/parse-xml-with-jquery/ // (not used) http://www.paulund.co.uk/process-each-node-of-xml-in-jquery

Le problème est que la fonction xmlParser () n’est pas appelée après la requête ajax réussie. Il affiche une alerte 123 mais pas une alerte 456. Est-ce que je fais quelque chose de mal ou est-ce que le tutoriel est faux?

ajax ok http 200

Auparavant, dans l’autre question, on me disait que c’était un problème de la SCRO, mais j’appelais le fichier à partir de mon ordinateur. Dans mon exemple, quel est le problème maintenant?

si vous utilisez

 dataType: "xml" 

et si vous avez un xml invalide dans votre réponse, alors le succès ne sera pas sortingger

vérifiez votre réponse car sa valeur est invalide … si vous voulez tester votre code, il suffit de changer

 dataType: "html" 

et vous verrez votre alerte (456) qui confirme les données XML non valides

J’ai dupliqué votre problème et en plaçant dans ma réponse un code XML valide, le code fonctionnait correctement.

De même, si vos données attendues sont simplement une chaîne contenant un identifiant, essayez d’utiliser

 dataType: "xml text" 

REMARQUE: À partir de jQuery 1.5, jQuery peut convertir un type de données de ce qu’il a reçu dans l’en-tête Content-Type en ce dont vous avez besoin.