Разбор XML через jQuery, вложенные циклы - PullRequest
0 голосов
/ 18 декабря 2009

Я использую jQuery для анализа XML на моей странице, используя $.ajax(). Мой блок кода находится ниже, и я могу заставить эту работу отображать каждый результат в файле 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>

Где вы видите <course> Я пытаюсь получить результаты, чтобы напечатать оценки для КАЖДОГО студента по каждому курсу. Любые идеи о том, что я буду делать?

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

Ответы [ 2 ]

1 голос
/ 18 декабря 2009

В этой строке: $(xml).find('course').each(function(){

Вы имели ввиду find от xml или это должно быть $(this).find?

0 голосов
/ 02 декабря 2011

Уверен, что вы ищете это. Все, что я делал, это собирал оценки в массив и соединял их через запятую в конце. Я тоже не проверял (зло).

$.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>");
        });
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...