PHP JSON_ENCODE не приводит к реальному объекту / сделать строку массива в реальный объект / повернуть массив PHP в JSON

StackOverflow https://stackoverflow.com/questions/4293295

Вопрос

Вот мой PHP код, он получает список коллекций из MongoDB

$list = $db->dbname->listCollections();
$result = array();
$i=0;
foreach ($list as $thiscollection) {
    $result[$i++] = $thiscollection->getName();
}
echo json_encode( $result );

Я делаю console.log в обратном вызове, и это то, что я вижу.

["fruits", "dogs", "cars", "countries"]

Проблема в том, что это строка, а не массив. Мне нужно повторять эти ценности. Как я делаю это в реальном объекте или получить PHP, чтобы дать мне JSON, а не массив PHP, поэтому я могу использовать Parsejson на нем.

Спасибо.

JS:

$.post('/ajax-database.php', function (data) {
    console.log($.parseJSON(data));
    $.each(data, function (key, value) {
        console.log(value);
    });
});
Это было полезно?

Решение

Я вижу, вы используете jQuery, если вы хотите, чтобы данные вернулись к вам как объект JSON, вам нужно сделать 1 из 2 вещей.

  1. Добавьте заголовок («тип содержимого: приложение / JSON») в свой PHP-файл, это скажет jQuery, чтобы преобразовать его в объект json вместо в качестве текста

  2. Добавьте параметр вперед на ваш $ .post,

$ .post ('/ ajax-database.php', Функция (данные) {console.log ($. Parsejson (данные)); $. {data, function (key, значение) {console.log (значение); });}, "Json");

Это скажет jQuery, чтобы позвонить вашему обработчику ошибок, если его не JSON, например, если ваш код PHP не удается и выводит HTML. Вы действительно должны использовать $ .ajax, я понятия не имею, почему кто-то использует $ .post, вы не можете сделать какую-либо значимую обработку ошибок.

Другие советы

Json. является строки. Если вы хотите иметь возможность повторять его, то вам нужно декодировать его.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top