2013-08-18 103 views
0

我通过JSON阵列试图循环,但我不知道如何正确地构建各自在这种情况下,每个函数的任何想法?通过JSON阵列

这里就是$不用彷徨是获得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); 
      }); 
    }); 

回答

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. 你的阵列上,而你迭代这个数组调用每个。如果您在JSON中有10个问题,则最终会有100个答案。

    你可能就意味着这一点。

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

+0

好的解释!但是我仍然遇到了一些麻烦,我在我的问题中进行了修改,但它仍然没有提供任何数据。什么原因? :) – Kim

+0

对不起,我在阅读JSON数据时犯了一个错误。我更新了我的答案。 – FakeRainBrigand

+0

谢谢!我想我现在要解决这个问题! – Kim