可能重复:
Loop through Json object
我有一个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'或问题解决我如何迭代数组?
感谢。
答案 0 :(得分:7)
其他响应者错过了偷偷摸摸但仍然显而易见的一点,从PHP中轮询的资源返回的内容可能已经是有效的JSON,并且重新编码它导致浏览器仅将其解释为字符串。在这种情况下,javascript从来没有机会。
删除PHP中的json_encode()位,然后回显返回的内容,看看是否有所改善。
答案 1 :(得分:2)
我认为您的问题是第二个this
中的each
。尝试:
$.each(output, function(key, value) {
$.each(value, function(key, value){
alert(key + " --> " + value);
});
});
答案 2 :(得分:1)
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]);
}
}
});
答案 3 :(得分:0)