2010-12-10 7 views
1

Ok, donc je peut analyser le XML avec jQuery, mais il semble seulement fonctionner dans FireFox et pas IE.Analyse XML avec jQuery

Mon fichier XML:

<?xml version="1.0" encoding="utf-8" ?> 
<Answers> 
    <Question> 
     <question-title>Question One - Title</question-title> 
     <a>24</a> 
     <b>36</b> 
     <c>10</c> 
     <d>30</d> 
    </Question> 
</Answers> 

Mon code XML qui parse:

var xmlType = 'xml'; 
     if ($.browser.msie) { 
      xmlType = 'text/xml' 
     } 
$.ajax({ 
      type: "GET", 
      url: "answers.xml", 
      dataType: xmlType, 
      success: function(xml) { //if the XML exists 
       $(xml).find('Answers').each(function(){ //go inside answers 
        $(this).find('Question').each(function(){ //for each question... 
         var moo = $(this).find('question-title').text(); 
         $('.question-title').append(moo); //append the question title 

         var a = $(this).find('a').text(); 
         var b = $(this).find('b').text(); 
         var c = $(this).find('c').text(); 
         var d = $(this).find('d').text(); 

         $('.label1').html(a+'%'); 
         $('.label2').html(b+'%'); 
         $('.label3').html(c+'%'); 
         $('.label4').html(d+'%'); 

         $('.input1').val(a); 
         $('.input2').val(b); 
         $('.input3').val(c); 
         $('.input4').val(d); 

         $('.cu-mid','.cuboid.'+'green1').animate({ 
          height: a 
         }, 550); 
         $('.cu-mid','.cuboid.'+'green2').animate({ 
          height: b 
         }, 550); 
         $('.cu-mid','.cuboid.'+'green3').animate({ 
          height: c 
         }, 550); 
         $('.cu-mid','.cuboid.'+'green4').animate({ 
          height: d 
         }, 550, function() { 

          $('.cu-mid').animate({ 
           height: '+='+50 
          }, 550); 

         }); 
        }); 
       }); 
      } 
     }); 

La sortie dans FireFox est correcte - hauteurs sur les éléments requis. Mais dans IE - rien ... zip ... nada ...

Je pensais d'abord que cela pourrait être le dataType, donc j'ai ajouté une déclaration if ... Cela n'a pas aidé non plus.

Des idées intelligentes bods ?!

Cheers.

modifier: Je reçois les erreurs suivantes dans IE:
ligne Argument non valide 66 - l'accolade se terminant par: $(xml).find('Answers').each(function(){
objet ligne attendu 1 - ???

+0

Obtenez-vous une erreur de toute sorte? Aussi, juste pour les coups de pied, essayez de commenter les lignes 'title' et voyez si cela fait une différence. –

+0

Édité ma question, inclus deux erreurs (oh, et en commentant les lignes de titre n'a rien changé) –

+0

@Neurofluxation - juste curieux, fait '$ (xml) .filter ('Réponses')' ont un effet dans IE? (au lieu de '.find()')? –

Répondre

1

Nevermind j'ai tout compris:

function runQuiz(whichQ) { 
      if (window.XMLHttpRequest) { 
       xmlhttp = new XMLHttpRequest(); 
      } else { 
       xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
      } 
      xmlhttp.open("GET", whichQ, false); 
      xmlhttp.send(); 
      xmlDoc = xmlhttp.responseXML; 

      var a = xmlDoc.getElementsByTagName("a"); 
      var a2 = $(a).text(); 
      var b = xmlDoc.getElementsByTagName("b"); 
      var b2 = $(b).text(); 
      var c = xmlDoc.getElementsByTagName("c"); 
      var c2 = $(c).text(); 
      var d = xmlDoc.getElementsByTagName("d"); 
      var d2 = $(d).text(); 

      $('.label').fadeOut(350); 
      $('.cu-mid','.cuboid.'+'green1').animate({ height: a2 }, 550); 
      $('.cu-mid','.cuboid.'+'green2').animate({ height: b2 }, 550); 
      $('.cu-mid','.cuboid.'+'green3').animate({ height: c2 }, 550); 
      $('.cu-mid','.cuboid.'+'green4').animate({ height: d2 }, 550, function() { 
       $('.cu-mid').animate({ 
        height: '+='+50 
       }, 550, function() { 
        $('.label1').html(a2+'%'); 
        $('.label2').html(b2+'%'); 
        $('.label3').html(c2+'%'); 
        $('.label4').html(d2+'%'); 
        $('.label').fadeIn(350); 
       }); 
      }); 
     } 

$(document).ready(function() { 
    runQuiz('question1.xml'); 
}); 
+0

Donc la solution est d'utiliser un objet ActiveX dans IE? (c'est-à-dire, la détection des caractéristiques) –

+0

En effet, il semblait plus logique d'avoir la fonction entière comme non-jQuery –

0

Il existe des différences dans la façon d'obtenir le meilleur d'un objet xmlHttpRequest dans les versions d'Internet Explorer.

Voir les notes MSDN sur XMLHttpRequest Object