Intereting Posts
Ошибка SQL с использованием CTE Доступ к переменным ViewModel при событии отправки Вложенный массив в список HTML стихия worldpay примеры вместе Позвольте пользователям создавать свои собственные настраиваемые параметры меню, сохраняя при этом значения по умолчанию для приложений Лучше ли фильтровать набор результатов с помощью предложения WHERE или с использованием кода приложения? Как получить медиа: контент с SimpleXML PHP удаляет повторяющиеся записи фида XML Yii2: Как вы используете именованные параметры в командах консоли? Как сохранить имя загруженного файла в базе данных Отключите глобальную фильтрацию XSS для спецификации. контроллер? Получить строку между – Найти все вхождения PHP Автозаполнение в формате .php, похоже, больше не работает Импорт календарей iCal в базу данных MySQL Laravel – комментарии Blade, обработка клинка, приводящая к сбою страницы

php json_encode не приводит к реальной строке объекта / make массиву в реальном объекте / превращает php-массив в json

Вот мой 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 на нем.

Благодарю.

ЯШ:

 $.post('/ajax-database.php', function (data) { console.log($.parseJSON(data)); $.each(data, function (key, value) { console.log(value); }); }); 

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

  1. добавьте заголовок («Content-Type: application / json») в ваш php-файл, это скажет jquery, чтобы преобразовать его в объект json, а не как текст

  2. Добавьте четвертый параметр в ваш $ .post,

 $ .post ('/ ajax-database.php', функция (данные) {
     console.log (. $ parseJSON (данные));
     $ .each (данные, функция (ключ, значение) {
         console.log (значение);
     });
 }, "json");

что скажет jquery вызывать обработчик ошибок, если его NOT json, например, если ваш php-код терпит неудачу и выдает html. Вы действительно должны использовать $ .ajax, я понятия не имею, почему кто-то использует $ .post, вы не можете делать ЛЮБАЯ значимую обработку ошибок.

JSON – это строки. Если вы хотите, чтобы иметь возможность перебирать его, вам нужно его декодировать.