2010-06-07 6 views
1

je le code XML suivant:parsing XML en utilisant jQuery

<?xml version="1.0" encoding="utf-8"?> 
<Area xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
<Scenes> 
    <Scene Index="1" Name="Scene1" /> 
    <Scene Index="2" Name="Scene2" /> 
</Scenes> 
</Area> 

que je suis en train d'analyser avec jquery:

<script> 
     $(document).ready(function(){ 
      $.ajax({ 
       type: "GET", 
       url: "list.xml", 
       dataType: "xml", 
       success: function(xml) { 
        $(xml).find('scenes').each(function(){ 
          $(this).find('scene').each(function(){ 
          var name = $(this).attr('name');        
          $('<div class="items" ></div>').html('<p>'+name+'</p>').appendTo('#page-wrap'); 

         });      
        }); 
       } 
      }); 
     }); 
</script> 

Pourquoi ce ne fonctionne pas? Aidez-moi!! première tentative à javascript/jquery Ceci est basé sur un exemple que j'ai trouvé, mais j'ai été jusqu'à présent incapable de l'adapter à mon utilisation. /Lars

+0

Essayez de voir si elle est sensible à la casse? – icktoofay

+0

pouvez-vous définir "ne fonctionne pas" un peu plus s'il vous plaît. – jAndy

+0

@icktoofay: Il n'est pas sensible à la casse @jAndy: ne fonctionne pas signifie que n'est pas affiché - je ne sais pas comment l'expliquer autrement: o). C'est ma première fois avec js - des conseils sur le débogage/la recherche de panne ce code. J'ai essayé d'ajouter des alertes/messages. il entre dans $ .ajax mais après cela rien ne se passe si je déplace l'alerte plus loin "dans" le code – lmkk

Répondre

2

Firefox Ce code fonctionne pour moi dans Safari et (étonnamment):

$.ajax({ 
    type: "GET", 
    url: "list.xml", 
    dataType: "xml", 
    success: function(xml) { 
    $(xml).find('Scenes').each(function(){ 
     $(this).find('Scene').each(function(){ 
      var name = $(this).attr('Name');        
      $('<div class="items" ></div>').html('<p>'+name+'</p>').appendTo('#page-wrap'); 
      });      
     }); 
    }, 
    error:function(a,b,c) { console.log(c) } 
}); 

La raison pour laquelle il ne fonctionne pas dans certains navigateurs est probablement dû au fait que vous hébergez du système de fichiers (en supposant tu es). Chrome et Firefox ont tendance à causer des problèmes lors de l'accès au système de fichiers via la requête AJAX en raison de la politique de même origine.

Le javascript est correct. Vous obtenez simplement une réponse vide ou une erreur.

Cette question peut être applicable:

Problems with jQuery getJSON using local files in Chrome

0

Essayez de changer ceci:

$('<div class="items" ></div>') 

à ceci:

$('.items') 
0

Essayez d'exécuter le code de la console de votre navigateur plutôt que quand le document est prêt. Cela vous permettra de parcourir les choses beaucoup plus rapidement. Essayez FireBug dans Firefox pour les débutants. Je trouve la console FB beaucoup plus facile à utiliser lors du débogage d'actions complexes que ce que vous obtenez dans un navigateur basé sur Webkit.

Vous pouvez également essayer d'ajouter error et completecallback functions à votre appel $.ajax().

$.ajax({ 
    // ... 
    error: function (req, err_type, ex) { console.log("error..."); }, 
    complete: function (req, status) { console.log("complete..."); } 
}); 

Vous pouvez également essayer de lancer certaines alertes ou console.logs dans votre gestionnaire de succès. Juste assez pour vous assurer que vous savez qu'il est appelé et obtient le résultat xml que vous attendez qu'il obtienne.

+0

Trouvé deux problèmes et résolu l'un d'entre eux. Il est sensible à la casse après tout - Merci à icktoofay et Patrick. Mais pour une raison quelconque, cela ne fonctionne que dans Safari, mais pas dans Chrome ou Firefox. n'est-ce pas le safari et le chrome pareil en termes de moteurs javascript - webkit? – lmkk