#arrays #object #json
#массивы #объект #json
Вопрос:
Я использую JSON и javascript для извлечения данных из php-файла, который подключается к базе данных. Вот как выглядит мой php-код:
while($row = $stmt->fetch_assoc()) {
$data[] = $row;
}
header("Content-type: text/plain");
echo json_encode($data,true);
Это мой Javascript:
var displayfeeds = new ajaxObject('ajax/users/display.feeds.php');
displayfeeds.callback = function (responseText,status) {
var feed = JSON.parse(JSON.stringify(responseText));
$("#feeds-feedback").html(feed);
}
displayfeeds.update();
Когда я запускаю это, он выводит массив, подобный этому:
[
{
"userID":"39160902151",
"content":"bar bar bar bar",
"published":"2011-06-07 10:33:35"
},
{
"userID":"5896858666",
"content":"foo foo foo foo foo",
"published":"2011-06-06 22:54:51"
}
]
Мой вопрос таков: Как мне затем отобразить, скажем, «идентификатор пользователя» и «содержимое» из этого?
Я действительно боролся. Я новичок в JSON.
Комментарии:
1. Нет необходимости дважды кодировать ваш JSON, избавьтесь от
JSON.stringify()
вызова.JSON.strigify()
является ли JavaScript эквивалентом команды PHPjson_encode()
. Поскольку вы получили его в виде строки, нет необходимости делать это в вашем JS.JSON.parse()
принимает строку JSON и преобразует ее в объект, в PHP есть эквивалентная функция, вызываемаяjson_decode()
, которую вы бы использовали, если бы передали строку JSON обратно в PHP.
Ответ №1:
Для их отображения вам необходимо преобразовать ваши объекты json в html. Итак, в вашей функции обратного вызова я бы сделал что-то вроде этого:
displayfeeds.callback = function (responseText,status) {
var feed = JSON.parse(JSON.stringify(responseText));
var html = '';
// build html for each feed item
for (var i = 0; i < feed.length; i ) {
html = '<h3>UserID:: ' feed[i]['userID'] '</h3>';
html = '<p>' feed[i]['content'] '</p>';
html = '<div><strong>published</strong>: ' feed[i]['userID'] '</div>';
html = '<hr />';
}
// append content once all html is built
$("#feeds-feedback").append(html);
}
Комментарии:
1. Большое вам спасибо. Это сработало. Мне просто пришлось удалить stringify и следовать обоим предложениям ваших ребят. Спасибо 🙂
Ответ №2:
Чтобы получить первый идентификатор пользователя:
var feed = JSON.parse(responseText);
feed[0].userID
Комментарии:
1. Вы должны увидеть серую галочку под оценкой по каждому ответу. Нажмите на это, чтобы выбрать нужный ответ.