【问题标题】:Parsing XML via jQuery, nested loops通过 jQuery 解析 XML,嵌套循环
【发布时间】:2009-12-18 16:07:18
【问题描述】:

我正在使用 jQuery 在我的页面上使用 $.ajax() 解析 XML。我的代码块在下面,我可以让它在 XML 文件上显示每个结果,但我遇到了麻烦,因为每个部分可以有多个 <course> 并且我试图打印属于一个学生的所有成绩。这是 XML 的示例。

<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>

您在哪里看到&lt;course&gt; 我正在尝试获取结果以打印每个学生在每门课程中的成绩。关于我会做什么的任何想法?

$.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>");
                });
            }
        });

【问题讨论】:

    标签: jquery xml parsing


    【解决方案1】:

    在这条线上:$(xml).find('course').each(function(){

    你的意思是 find 离开 xml 还是应该是 $(this).find

    【讨论】:

    • 应该是:$(this).find - 但这似乎仍然无法解决问题。基本上:一个学生可以有很多成绩。我正试图展示它..谢谢!
    【解决方案2】:

    很确定您正在寻找这个。我所做的只是在一个数组中捕获成绩并在最后通过逗号加入它们。我也没有测试(邪恶)。

    $.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>");
            });
        }
    });
    

    【讨论】:

      猜你喜欢
      • 2013-03-14
      • 2021-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多