0

我正在尝试遍历 JSON 数组,但我不确定在这种情况下如何正确构建 each,有什么想法吗?

这是 $.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);
            });
    });
4

1 回答 1

2

这条线导致了一个问题:

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);
  1. 在遍历数组时,您在数组上调用 each。如果您的 JSON 中有 10 个问题,那么您最终将得到 100 个答案。

    你可能是这个意思。

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

于 2013-08-18T03:55:58.537 回答