【问题标题】:Jquery json multiple data returns undefinedJquery json 多条数据返回未定义
【发布时间】:2014-08-22 12:08:50
【问题描述】:

我有 licz.php

<?php 
echo json_encode(array("a"=>"John","b"=>"2pm")); 
?> 

和 index.php 中的脚本

<script>
$.ajax({
          type: "POST",
          url: "licz.php",
          datatype: "json",
          success: function(data) {
                  var json_x = data[0];
                  alert(json_x.a);
                  alert(json_x.b);       
            }

        });
</script>

但我收到警报“未定义”怎么了?

【问题讨论】:

  • 在 console.log 中打印没有 [0]data 变量,看看它的样子。
  • 首先检查data。里面有什么?
  • 是 licz.php 中的全部代码,还是有其他输出(例如另一个 echo json...)?如果那是唯一的输出,请参阅 Matei 的答案
  • console.log 返回“未定义”
  • 是的,它的整个代码都在 licz.php 中

标签: php jquery json post


【解决方案1】:

data 是一个对象,您可以直接访问 ab 键。如果没有,则必须使用JSON.parse() 方法解析 JSON 数据。

success: function(data) {
    data = JSON.parse(data);
    alert(data.a);
    alert(data.b);       
}

【讨论】:

  • 它还返回“未定义”
  • 我认为你需要先用 data = JSON.parse(data) 解析它,然后才能使用 data.a 并且你总是可以 console.debug(data) 看看从 php 返回的内容正是你想要的跨度>
  • 谢谢@MoshMage 我已经用你的建议更新了代码。
【解决方案2】:

试试这个:

licz.php:

<?php 
    myArray = array();
    myArray[0]["a"] = "John";
    myArray[0]["b"] = "2pm";
    echo json_encode(myArray); 

?>  

和.js:

<script>
    $.ajax({
        type: "POST",
        url: "licz.php",
        success: function(data) {
            var myTable = JSON.parse(data);
            for(var i =0;i<myTable.length;i++){
                alert(myTable[i].a);
            }
        }
    });
</script>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-13
    • 2012-04-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多