2013-08-18 71 views
0

我試圖從下面的「$ .each」JSON文件中獲取值,但它不給我任何價值的$ .each方法我使用下面,有沒有人有任何建議我可以做到這一點好好工作?我想爲每個對象[問題]提供問題值的信息,然後回答每個問題。如何從JSON中獲取每個對象的值?

JSON:

[ 
    { 
     "Question": "Question 1", 
     "Answers": [ 
      { 
       "Answers": "Answer 1", 
       "Correct": false 
      }, 
      { 
       "Answers": "answer2", 
       "Correct": true 
      } 
     ] 
    }, 
    { 
     "Question": "Question 2", 
     "Answers": [ 
      { 
       "Answers": "An Answer", 
       "Correct": false 
      } 
     ] 
    } 
] 

的jQuery:

$(document).ready(function() { 
    $.get("data.php", function(data) { 
     $.each(data, function(i, val) { 
      var q = new Question(count++, val.Question); 
      questions.push(q); 
     }); 

     $.each(val.Answers, function(i, a) { 
      q.addAnswer(a.Answers, a.Correct, q); 
      questions.push(q); 
     }); 
    }); 

感謝任何幫助!


UPDATE:

$(document).ready(function() { 
    $.get("data.php?campaign_id=39&social_user_id=1192&edit=true", function(data){ 

     var questions = []; 
     $.each(data, function(i, val) { 
      var q = new Question(count++, val.Question); 
      questions.push(q); 

      $.each(val.Answers, function(i, a) { 
       q.addAnswer(a.Answers, a.Correct, q); 

      }); 
     }); 
    }); 
}); 

回答

3

,如果你想從第二個訪問val您需要嵌套的循環。你似乎錯誤地放置了右括號。

var questions = []; 
$.each(data, function(i, val) { 
    var q = new Question(count++, val.Question); 
    questions.push(q); 

    $.each(val.Answers, function(i, a) { 
     q.addAnswer(a.Answers, a.Correct, q); 
    }); 
}); 
process(questions); // callback 
+0

謝謝,我在我的問題,什麼現在發生的事情是,我可以在$不用彷徨後,立即得到「數據」,但在每次休息做了更新並且我沒有收到任何數據,是否需要很長時間才能從PHP獲取數據,因此它會中斷? – Kim

+0

它不是在「get」之後,而是在「回調」中。哪個'each'確實中斷,什麼是異常消息? – Bergi

+0

然而,你的'問題'變量似乎是全球性的,所以我想你會犯一個常見的錯誤,不使用回調。閱讀[如何從AJAX調用返回響應?](http://stackoverflow.com/questions/14220321/how-to-return-the-response-from-an-ajax-call)瞭解異步 – Bergi

0

我管理它現在工作!

這是我使用的代碼:

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