2010-11-08 2 views
4

Je me casse la tête sur cela pendant un moment maintenant et je n'ai aucune idée de ce que je fais mal. Le scénario est le suivant, j'utilise swfupload pour télécharger des fichiers avec une barre de progression via un webservice. le webservice doit retourner le nom de la vignette générée. Tout va bien et bien que je préfère obtenir les données retournées dans json (pourrait le changer plus tard dans les fichiers swfupload js) les données XML par défaut est bien aussi.l'analyse simple xml avec jquery du service web asp.net

Alors, quand un téléchargement complète le webservice renvoie le code XML suivant comme prévu (notez que j'enlevé l'espace de noms dans webservice):

<?xml version="1.0" encoding="utf-8"?> 
<string>myfile.jpg</string> 

Maintenant, je veux analyser ce résultat avec jquery et je pensais que ce qui suit le ferait :

var xml = response; 
alert($(xml).find("string").text()); 

Mais je ne peux pas obtenir la valeur de chaîne. J'ai essayé beaucoup de combinaisons (.html(), .innerhtml(), response.find ("string"). Text() mais rien ne semble fonctionner.C'est la première fois que j'essaie d'analyser xml via jquery alors peut-être que je « m faire quelque chose fundemantally mal. la 'réponse' est rempli avec le xml.

J'espère que quelqu'un peut me aider. Merci pour votre temps.

Meilleures salutations, Mark

Répondre

2

I think $ (xml) est à la recherche d'un objet dom avec un sélecteur qui correspond à la valeur de chaîne de XML, donc je suppose qu'il revient null ou vide?

Le premier Plugin mentionné ci-dessous xmldom semble assez bon, mais si votre XML est vraiment aussi simplement retourné comme exemple ci-dessus, un peu d'analyse syntaxique de chaîne peut être plus rapide, quelque chose comme:

var start = xml.indexOf('<string>') + 8; 
var end = xml.indexOf('</string>'); 
var resultstring = xml.substring(start, end); 

De this answer à cette question: How to query an XML string via DOM in jQuery

Quote:

Il y a 2 façons d'aborder ce sujet.

  1. Convertir la chaîne XML à DOM, l'analyse syntaxique en utilisant ce plugin ou suivre cette tutorial
  2. Convertir le XML JSON en utilisant ce plugin.
+0

Merci beaucoup pour la solution, je vais opter pour la méthode d'analyse de chaînes pour l'instant, je n'ai même pas pensé à ça. Quand l'objet devient plus grand, je vais chercher le plugin xml to json. Merci a sauvé ma journée! – Mark

0

jQuery ne peut pas analyser XML. Si vous passez une chaîne pleine de contenu XML dans la fonction $, elle essaiera généralement de l'analyser en HTML à la place en utilisant la norme innerHTML. Si vous avez vraiment besoin d'analyser une chaîne complète de XML, vous aurez besoin de méthodes spécifiques au navigateur et non prises en charge globalement comme new DOMParser et l'objet ActiveXObject XMLDOM, ou un plugin qui les enveloppe.

Mais vous n'avez presque jamais besoin de le faire, car un XMLHttpRequest doit renvoyer un DOM XML entièrement analysé dans la propriété responseXML.Si votre service Web définit correctement un en-tête de réponse Content-Type pour indiquer au navigateur que ce qui revient est XML, l'argument data de votre fonction de rappel doit être un objet Document XML et non une chaîne. Dans ce cas, vous devriez pouvoir utiliser votre exemple avec find() et text() sans problèmes.

Si le côté serveur ne renvoie pas d'en-tête XML Content-Type et vous ne pouvez pas résoudre ce problème, vous pouvez passer l'option type: 'xml' dans le ajax settings comme prioritaire.

Questions connexes