Вот мой 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 вещей.
добавьте заголовок («Content-Type: application / json») в ваш php-файл, это скажет jquery, чтобы преобразовать его в объект json, а не как текст
Добавьте четвертый параметр в ваш $ .post,
$ .post ('/ ajax-database.php', функция (данные) { console.log (. $ parseJSON (данные)); $ .each (данные, функция (ключ, значение) { console.log (значение); }); }, "json");
что скажет jquery вызывать обработчик ошибок, если его NOT json, например, если ваш php-код терпит неудачу и выдает html. Вы действительно должны использовать $ .ajax, я понятия не имею, почему кто-то использует $ .post, вы не можете делать ЛЮБАЯ значимую обработку ошибок.
JSON – это строки. Если вы хотите, чтобы иметь возможность перебирать его, вам нужно его декодировать.