Как достать данные из 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, время: 17:59. |