如何使用PHP中的jQuery / AJAX调用遍历JSON数组?

可能重复:
循环浏览Json对象

我有一个PHP函数data.php ,它从外部服务器URL中获取JSON数据,如下所示:

<?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" } 
]

我现在正在尝试编写对该PHP函数的AJAX调用,遍历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从来没有机会。

删除PHP中的json_encode()位,然后回应返回的内容,看看这是不是可以改进的。


我觉得你的问题是this第二each 。 尝试:

$.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]);
        }
      }
    });
链接地址: http://www.djcxy.com/p/28825.html

上一篇: How do I iterate over a JSON array using jQuery/AJAX call from PHP?

下一篇: Javascript: Iterating over JSON objects