【问题标题】:jQuery $.get() Array Returns [object Object]jQuery $.get() 数组返回 [object Object]
【发布时间】:2011-02-23 19:02:19
【问题描述】:

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]

我做错了什么?

【问题讨论】:

标签: php jquery arrays json


【解决方案1】:

试试:

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

【讨论】:

    【解决方案2】:

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

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

    jsfiddle 示例

    【讨论】:

      【解决方案3】:

      使用 console.log(data) 从 Firebug 或 Webkit 的控制台中可以体面地查看 JSON 中的内容。

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

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

          【解决方案5】:

          使用 .getJSON。试试:

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

          【讨论】:

            【解决方案6】:

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

            alert ([n, val.toSource() ]); 是一个不错的简写方式

            【讨论】:

              猜你喜欢
              • 2014-06-07
              • 2019-03-30
              • 1970-01-01
              • 2012-03-05
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2021-11-10
              相关资源
              最近更新 更多