Возможный дубликат:
Петля через объект 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?