每个函数都通过JSON数组

时间:2013-08-18 03:44:34

标签: jquery json foreach

我正在尝试循环一个JSON数组,但是我不确定如何在这种情况下正确地构建每一个,任何想法?

这是$ .get获得的JSON:

[{"Question":"Write your question here",
    "Answers":
         [{"Answers":"asd",
            "Correct":false},
            {"Answers":"dasdas",
            "Correct":true 
            }
          ]},
{"Question":"Write your question here",
    "Answers":
            [{"Answers":"asdasd",
            "Correct":false
            }
    ] 
}]

这是Jquery:

    $.get("data.php", function(data){
    var data = data.replace(/[\[\]']+/g, '')
    $.each(data, function(i, q) {
    var q = new Question(count++, data.Question);
    $.each(data, function(i, val) {
    q.addAnswer(data.Answers, Correct, q);
    });
    });
    questions.push(q);
    });

编辑:

    $.get("data.php", function(data){

        $.each(data, function(i, val) {
            var q = new Question(count++, val.Question);
        questions.push(q);
        });
        $.each(q.Answers, function(i, val) {
            q.addAnswer(val, val.Correct, q);
        questions.push(q);
            });
    });

1 个答案:

答案 0 :(得分:2)

此行导致问题:

var data = data.replace(/[\[\]']+/g, '')

您正在尝试调用数组中不存在的“替换”方法。


在这部分中有两(3)个问题。

$.each(data, function(i, q) {
    var q = new Question(count++, data.Question);
    $.each(data, function(i, val) {
        q.addAnswer(data.Answers, Correct, q);
    });
});
questions.push(q);
  1. 在迭代数组时,您正在调用每个数组。如果您的JSON中有10个问题,最终会得到100个答案。

    你可能就是这个意思。

    .each(val.Answers, function(i, a) {
        q.addAnswer(a.Answers, a.Correct, q);
    });
    
  2. 您正在函数中创建一个名为q的变量,并尝试在问题之外访问它。您应该将questions.push移动到每个函数中。