我用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"}]
答案 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