2013-10-11 4 views
0

J'utilise $.ajax pour renvoyer des données à partir de la base de données comme un objet JSON. L'un des champs est XML valide (a été stocké dans SQL Server dans un champ XML). Quand j'utilise $.parseXML pour extraire les données XML, tout va bien dans IE (version 9), mais pas de joie dans Firefox ou Chrome.

Je pense que je pourrais avoir besoin de faire 2 requêtes distinctes, avec un juste retour des données XML avec contentType sous forme de texte/XML basé sur une recherche Google. Actuellement, le type de retour dans $.ajax est JSON, tout comme le contentType dans le fichier du gestionnaire de fichiers .ashx (oui, il s'agit d'une application ASP).

Quelqu'un peut-il offrir un aperçu ici?

Merci à l'avance, David

Exemple:

function ParseXMLRecord(record) { 
    var xmlDoc = $.parseXML(record); 
    var $xml = $(xmlDoc); 
    var Questions = $xml.find("Question"); 
    for (var x = 0; x < Questions.length; x++) { 
     var test = Questions[x]; 
     for (var t = 0; t < Questions[x].childNodes.length; t++) {   
      if (Questions[x].childNodes[t].tagName == 'Response') { 
       var controlId = '', value = ''; 
       for (var g = 0; g < Questions[x].childNodes[t].childNodes.length; g++) { 

        var tagname = Questions[x].childNodes[t].childNodes[g].tagName; 

        if (tagname === 'Control') { 

fails on firefox --> controlId = Questions[x].childNodes[t].childNodes[g].text; 

          ... 

=========================== ============================================= =========

je vais demander à c'est une façon différente. Voici le XML que je dois analyser:

<ResponseSet> 
    <Question> 
    <Text>Laterality</Text> 
    <Response> 
     <Control>rbLateralityLft</Control> 
     <Value>Left</Value> 
    </Response> 
    </Question> 

etc ...

base de ce qui précède, cette ligne ne fonctionne pas sur Firefox:

ControlId = Questions [x] .childNodes [ t] .childNodes [g] .text; // ni celui-ci -> Questions [x] .niveaux_child [t] .niveaux_child [g] .nodeTypedValue

+0

s'il vous plaît inclure un code –

+0

inclure un code qui reproduit le problème (par exemple certains xml et un petit exemple). Dire "pas de joie" en chrome et ff ne nous dit pas quelles erreurs vous obtenez ou où les choses tournent mal. –

+0

L'erreur indique que controlId n'est pas défini. Je ne pense pas que le problème soit lié à l'analyseur XML, mais plutôt à la manière dont j'essaie d'accéder aux données. – Shrink

Répondre

1

Si vous utilisez jquery pour analyser le code XML, utilisez jquery pour lire les données analysées, par exemple. exemple:

var s = "<ResponseSet> <Question> <Text>Laterality</Text> <Response>  <Control>rbLateralityLft</Control>  <Value>Left</Value> </Response> </Question><Question> <Text>Laterality2</Text> <Response>  <Control>rbLateralityLft2</Control>  <Value>Left2</Value> </Response> </Question></ResponseSet>"; 

var x = $.parseXML(s); 
$.each($(x).children().children(), function (idx, data) { 
    var questionText = $(data).find("Text").text(); 
    var control = $(data).find("Control").text(); 
    var value = $(data).find("Value").text(); 
    console.log(questionText + " - " + control + " - " + value); 
}); 

http://jsfiddle.net/TNLer/

Questions connexes