J'essaye de créer un site de portfolio où mes pièces résident dans un fichier XML. Je voudrais stocker le DOM XML dans une variable JavaScript afin que je puisse y accéder sans faire un appel au serveur chaque fois qu'un utilisateur clique pour charger un nouveau morceau.jQuery cache XML
En ce moment, j'ai:
$(document).ready(function() {
xml = getXML();
});
function getXML() {
var data = $.ajax({
url: '_lib/xml/portfolio.xml',
dataType: 'xml',
success: function(data) { return data; }
});
return data;
}
Tout en utilisant Firebug, si I "console.log (données)" dans la fonction anonyme après "succès:", il enregistre un "document". Si je "console.log (xml)" dans le "$ (document) .ready ...", il enregistre un XMLHTTPRequest et je ne peux pas accéder au DOM du document XML.
J'ai essayé de retourner "data.responseXML" mais cela ne fait rien. J'ai également essayé d'appeler une fonction non-anonyme après "succès:" et d'enregistrer le XML là-bas, et il apparaît toujours comme "Document" qui est ce dont j'ai besoin.
Il semble que le problème se produit lorsque je retourne le XML - il passe de "Document" à "XMLHTTPRequest".
Toute aide serait grandement appréciée. Merci!
Génial, NawaMan - merci beaucoup! Peut-être que "$ .ajax" renvoie l'ensemble de l'objet XML et "success:" renvoie juste le responseXML? Savez-vous pourquoi async doit être faux? – salmonete
Je n'ai vraiment aucune idée des retours: p. 'async' doit être' false' pour que la fonction 'getXML()' attende la réussite de l'exécution d'ajax en premier. (XML est affecté en premier). :RÉ – NawaMan