2009-12-18 4 views
0

J'utilise jQuery pour analyser XML sur ma page en utilisant $.ajax(). Mon bloc de code est ci-dessous et je peux obtenir ce travail pour afficher chaque résultat sur le fichier XML, mais j'ai des problèmes car chaque section peut avoir plus d'un <course> et j'essaie d'imprimer toutes les notes qui appartiennent à un étudiant. Voici un exemple du XML.parsing XML via jQuery, boucles imbriquées

<student num="505"> 
    <name gender="male">Al Einstein</name> 
    <course cid="1">60</course> 
    <course cid="2">60</course> 
    <course cid="3">40</course> 
    <course cid="4">55</course> 
    <comments>Lucky if he makes it to lab, hopeless.</comments> 
</student> 

Où vous voyez le <course> Je suis en train d'obtenir les résultats d'imprimer les notes pour chaque élève dans chaque cours. Des idées sur ce que je ferais?

$.ajax({ 
      type: "GET", 
      url: "final_exam.xml", 
      dataType: "xml", 
      success: function(xml) { 
       var student_list = $('#student-list'); 
       $(xml).find('student').each(function(){ 
        $(xml).find('course').each(function(){ 
         gradeArray = $(this).text(); 
         console.log(gradeArray); 
        }); 
        var name = $(this).find("name").text(); 
        var grade = $(this).find("course").text(); 
        var cid = $(this).find("course").attr("cid"); 

        //console.log(cid); 
        student_list.append("<tr><td>"+name+"</td><td>"+cid+"</td><td>"+grade+"</td></tr>"); 
       }); 
      } 
     }); 

Répondre

1

Sur cette ligne: $(xml).find('course').each(function(){

Est-ce que signifie pour vous find hors de xml ou devrait-il être $(this).find?

+0

Il devrait être: $ (this) .find - Mais cela ne semble toujours pas le résoudre. C'est fondamentalement: UN étudiant peut avoir de nombreuses notes. Et im essayant d'afficher cela ... merci! – Coughlin

0

Assez sûr que vous êtes à la recherche de ceci. Tout ce que j'ai fait était de capturer des notes dans un tableau et de les joindre par virgule à la fin. Je n'ai pas non plus testé (le mal).

$.ajax({ 
    type: "GET", 
    url: "final_exam.xml", 
    dataType: "xml", 
    success: function(xml) { 
     var student_list = $('#student-list'); 
     $(xml).find("student").each(function(){ 

      var name = $(this).find("name").text(); 
      var grades = []; 
      var cid = $(this).find("course").attr("cid"); 

      $(this).find('course').each(function(){ 
       var grade = $(this).text(); 
       console.log(gradeArray); 
       grades[ grades.length ] = grade 
      }); 

      //console.log(cid); 

      student_list.append("<tr><td>"+name+"</td><td>"+cid+"</td><td>"+grades.join(', ')+"</td></tr>"); 
     }); 
    } 
});