Intereting Posts
Получить исходный URL-адрес реферера из Google Search с помощью PHP? Обновление базы данных на __destruct ()? Ошибки обработки PHP Встроенный веб-сервер PHP генерирует недопустимый запрос (Неожиданный EOF) после выполнения каждого файла Проблемы с добавлением набора столбцов базы данных в массив Как передать вариантный тип объекта 16396 в методе COM, для которого требуется входное значение VT_VARIANT Получение информации из 3 таблиц SQL & PHP PDO – Неустранимая ошибка: вызов функции-члена функции fetch () для объекта, не являющегося объектом Laravel – список выбора заполнения с производными значениями ZF2: Как использовать средство проверки InArray для проверки элемента формы Multiselect? PHP mySQL проверяет, находятся ли имя пользователя и пароль в базе данных Аргумент 3, переданный в GuzzleHttp \ Client :: request (), должен быть из массива типов, строка задана Новый токен CSRF за запрос или NOT? Выполнение тестов phpunit с использованием HHVM (HipHop) Ошибка анализа: ошибка синтаксиса, неожиданная (T_VARIABLE)

Как перебирать массив JSON с помощью вызова jQuery / AJAX из PHP?

Возможный дубликат:
Петля через объект Json

У меня есть функция PHP, data.php , которая извлекает данные JSON из URL-адреса внешнего сервера:

 <?php $url = "https://dev.externalserver.net/directory"; $content = file_get_contents($url); echo json_encode($content); ?> 

Полученный массив JSON выглядит следующим образом:

 [ { "name": "Not configured", "mac_address": "1111c11c1111", "online": "false", "rate": "Not configured" }, { "name": "Not configured", "mac_address": "0000c00c0000", "online": "false", "rate": "Not configured" } ] 

Теперь я пытаюсь написать вызов AJAX для этой функции PHP, перебирать массив JSON и отображать его в браузере в форматировании, отличном от JSON. Мой код AJAX выглядит следующим образом:

 $.ajax({ url: 'data.php', type: 'POST', dataType: 'json', success: function(output) { $.each(output, function() { $.each(this, function(key, value){ alert(key + " --> " + value); }); }); } }); 

Моя проблема заключается в том, что в настоящее время код отображает окна предупреждений, которые показывают отдельные символы в массиве, такие как: 0 --> [ , 0 --> , 0 --> { … и т. Д. И т. Д.

Есть ли проблема с тем, как я передаю данные с помощью json_encode (); и dataType: 'json', или проблема решена с тем, как я выполняю итерацию через массив?

Благодарю.

Другие респонденты пропустили скрытый, но все же очевидный бит, что то, что возвращается с ресурса, опрошенного в PHP, вероятно, уже является действительным JSON, и перекодирование приводит к тому, что браузер интерпретирует его просто как строку. В этом случае у javascript никогда не было шанса.

Удалите бит json_encode () в PHP и просто откликните, что возвращается, и посмотрите, не улучшилось ли это.

Я думаю, что ваша проблема заключается во втором. Пытаться:

 $.each(output, function(key, value) { $.each(value, function(key, value){ alert(key + " --> " + value); }); }); 
 var jsonArray = [ { "name": "Not configured", "mac_address": "1111c11c1111", "online": "false", "rate": "Not configured" }, { "name": "Not configured", "mac_address": "0000c00c0000", "online": "false", "rate": "Not configured" } ]; $.each(jsonArray, function() { for (var key in this) { if (this.hasOwnProperty(key)) { console.log(key + " -> " + this[key]); } } }); 

Взгляни на это

Как выполнить цикл или перечислить объект JavaScript?