Как мне выбрать элементы из общего массива json_encode?

#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 эквивалентом команды PHP json_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. Вы должны увидеть серую галочку под оценкой по каждому ответу. Нажмите на это, чтобы выбрать нужный ответ.