Voir cet exemple sur la page des exemples jQuery pour Ajax:
var xmlDocument = [create xml document];
$.ajax({
url: "page.php",
processData: false,
data: xmlDocument,
success: someFunction
});
Comment puis-je prendre une chaîne comme:
var t = '<foo><bar>something</bar></foo>';
Et convertir cela en un objet XML DOM? multi-navigateur?
UPDATE: S'il vous plaît voir les commentaires à la réponse de karim79.
Enveloppez-le dans un objet jQuery. Ensuite, utilisez les méthodes de manipulation DOM normales de jQuery.
var t = $('<foo><bar>something</bar></foo>');
//loop over 'bar' nodes
t.find('bar').each(function () {
alert($(this).text());
});
Si vous voulez le reconvertir en chaîne simple (après l'avoir modifiée par exemple), vous pouvez le faire comme suit:
//then convert it back to a string
//for IE
if (window.ActiveXObject) {
var str = t.xml;
alert(str);
}
// code for Mozilla, Firefox, Opera, etc.
else {
var str = (new XMLSerializer()).serializeToString(t);
alert(str);
}
EDIT: Le manuel $ .ajax dit (sur l'option processData):
Par défaut, les données transmises aux données option en tant qu'objet (techniquement, autre chose qu'une chaîne) sera traité et transformé en une requête chaîne, correspondant à la valeur par défaut content-type "application/x-www-form-urlencoded" . Si vous souhaitez envoyer DOMDocuments, ou autres données non traitées, définissez ceci option à false.
Ainsi, si vous transmettez un objet jQuery au serveur, vous devrez le définir sur true ou le supprimer complètement (il est défini sur true par défaut). J'espère que ça a aidé.
Juste un avertissement sur la recherche d'appel - s'il s'agit d'un élément de niveau supérieur, vous devez utiliser le filtre à la place.
var t = $('<foo><bar>something</bar></foo>');
//loop over 'foo' nodes
t.filter('foo').each(function () {
alert($(this).find('bar').text());
});
Vous pouvez faire la conversion sans jQuery. Ceci est tiré de DOMParser Documentation :
// Create a DOMParser
var parser = new DOMParser();
// Use it to turn your xmlString into an XMLDocument
var xmlDoc = parser.parseFromString(xmlString, "application/xml");
vous pouvez utiliser ce code simple pour convertir vos balises XML en texte
var temp_var = $("<p/>").append($(your_xml_data)).htML()
rock solide code. fonctionne parfaitement dans tous les navigateurs.
var xmlFields = $("<root><reports name='report 1'><item
field='ord_num' desc='Order Number'/></reports></root>");
alert(xmlFields[0].outerHTML);