jQuery $ .get()Array返回[object Object]

时间:2011-02-23 19:02:20

标签: php jquery arrays json

test.php 包括:

echo json_encode( array(
  array("name"=>"John","time"=>"2pm"),
  array("name"=>"2","time"=>"1242pm"),
  array("name"=>"J231ohn","time"=>"2p213m"),
));

的jQuery

$.get("test.php", function(data) {
  $.each(data, function(n, val) {
    alert(n + ': ' + val)
  });
}, "json");

这是结果

0: [object Object]
1: [object Object]
2: [object Object]

我做错了什么?

6 个答案:

答案 0 :(得分:5)

尝试:

alert(n + ': name = ' + val.name + ' time = ' + val.time);

答案 1 :(得分:2)

我不知道php,但我猜你需要这样做,因为每个val都是一个json对象。

$.get("test.php", function(data) {
  $.each(data, function(n, val) {
    alert(n + ': ' + val.name + ' ' + val.time)
  });
}, "json");

jsfiddle示例

答案 2 :(得分:2)

使用console.log(数据)从Firebug或Webkit中的控制台中查看JSON中的内容。

这里很棒的教程:http://jqueryfordesigners.com/debugging-tools/

答案 3 :(得分:1)

从技术上讲,没什么。 'val'引用了对象,我怀疑它不是你想要的。您可能希望存储在每个数组中的值。因此,您可能希望访问数组键值,而不是警告'val':

alert(n + ': ' + val.name + ' ' + val.time)

答案 4 :(得分:0)

取决于您的浏览器,您可以调用val.toSource()来溢出对象内容而不是其类型(这是.toString()的默认行为)

一个很好的,简写的方法是alert ([n, val.toSource() ]);

答案 5 :(得分:0)

使用.getJSON。尝试:

$.getJSON("test.php", function(data) {
     $.each(data, function(n, val) {
         alert(n + ': ' + val)
     });
});