Как достать данные из JSON массива?
Всем привет. Подскажите как можно достать данные из json массива. Формирую его на сервере следующим образом:
$m_query = mysql_query("SELECT * FROM `tests` WHERE `test_id` = '". $test_id ."'"); while($row = mysql_fetch_array($m_query, MYSQL_ASSOC)) { $arr[] = array('id' => $row['test_id'], 'questions' => $row['questions'], 'answers' => $row['answers']); } echo json_encode($arr); Клиенту приходит json такого вида: [{"test_id": "1", "questions": "How are you:", "answers": "ok"}, {"test_id": "1", "questions": "How old are you:", "answers": "22"}] Пытаюсь вывести так: $.post('save_data.php', {drink: drink}, function(data){ var questions = data.questions; var answers = data.answers; $('#feeds').html(questions); }, "json"); Но ничего не выводится. Как можно достать значение ключа "questions", содержащегося в json массиве? |
Цитата:
var questions = data[i].questions; где i — целочисленный индекс (0, 1) |
var d=JSON.parse();//,??? var questions = d[0].questions; .... |
Все равно ничего не получается:
$(document).ready(function(){ $('form input:image').click(function() { var drink = $('input[name=drink]:checked').val(); $.post('save_data.php', {drink: drink}, function(data){ var questions = data.questions; var answers = data.answers.split(','); var enter_to = ''; for ( var i=0, l=questions.length; i<l; i++) { enter_to = "<b>Вопрос 1</b><Br>" + "<b>" + questions[i] + "</b><Br>"; for (var i2=0, l2=answers.length; i2<l2; i2++) { enter_to += "<b>" + answers[i2] + "</b><Br>"; } $('#feeds').html(enter_to); } }, "json"); return false; }); }); Использую метод split, так как в последнем поле БД значения перечислены через запятую. Я хочу добиться того, чтобы в браузер выводился первый вопрос, потом варианты ответов, потом второй вопрос и опять варианты. |
В базе данных 3 поля: "test_id", "questions" и "answers", а также 2 строки. В каждой строке по одному вопросу и варианты ответов через запятую.
|
Цитата:
Если Цитата:
data.questions == undefined. Цикл нужно организовывать по массиву data непосредственно |
Если б я знал как это сделать)
|
Сделал так:
$(document).ready(function(){ $('form input:image').click(function() { var drink = $('input[name=drink]:checked').val(); $.post('save_data.php', {drink: drink}, function(data){ for (var i in data) { var row = data[i]; $('#feeds').html('<b>' + row.questions + '</b>'); } }, "json"); return false; }); }); Но он почему то выводит только один вопрос, который находится во второй строке БД. А тот что в первой строке не выводит. Нужно чтоб оба вывел. Как сделать подскажите. |
var row=''; for (var i in data) { var row+ = '<br><b>'+data[i].questions+'</b>';}; $('#feeds').html(row); |
Спасибо большое! А то я мучился целый день. Только немножко подправить надо:
var row=''; for (var i in data) { row+ = '<br><b>'+data[i].questions+'</b>'; $('#feeds').html(row); Второй раз переменную row объявили.:) |
Часовой пояс GMT +3, время: 19:47. |