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?
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.