JSON.parse是一个“未定义”的对象

时间:2017-12-06 13:43:35

标签: javascript php jquery json ajax

我用php创建了json。数据随ajax而来。但是JSON.parse给出了一个“未定义”的对象。为什么?

Php CODE

 $emparray = array();
 while($row =mysqli_fetch_assoc($result))
 {
     $emparray[] = $row;
 }

 echo json_encode($emparray);

Ajax代码

   $.ajax({
        type: "GET",
        url: "http://localhost:8080/xxx.php/",
        success: function (msg, result, status, xhr) {
            var obj= JSON.parse(msg);
            alert(obj.name);// giving undefined
        },
        error: function (error) {
        }
    });

JSON

[{"name":"eng","a":"sdf"}]

3 个答案:

答案 0 :(得分:1)

你应该obj[0].name

因为您正在访问数组第一个元素的name属性。

答案 1 :(得分:1)

您的JSON是一个数组,这意味着您必须在访问该属性之前指向该对象的索引。

此代码应该有效:

console.log(obj[0].name); //Returns "eng"

如果您的JSON数组是这样的:

[{"name":"eng","a":"sdf"}, {"name":"esp", "a":"abc"}]

然后obj[1].name将返回"esp"

答案 2 :(得分:0)

从服务器获取数据的更好方法

$emparray = array();
 while($row =mysqli_fetch_assoc($result))
 {
     $emparray[] = $row;
 }

 echo json_encode(array("data"=>$emparray));

将所有json响应放在data的密钥上,然后在前端定义服务器响应是dataType的JSON,然后不需要按{{1}解析数据}}

如果从服务器收到的数据为空,

JSON.parse()将为您提供验证,以防止未定义错误

msg.data.length