function getReportedInfo(id) {
$.ajax({
url: 'includes/get_data.php',
type: 'POST',
data: {id:id},
dataType: 'json',
success: function(data) {
console.log(data);
}
});
};
从get_data.php脚本返回的JSON对象是:
{
id: 5,
username: "Anthony",
status: "accupied"
}
如果我执行console.log(data.length),我能够获得数据对象的长度。但是,当我在success属性中的console.log(data)时,我可以看到该对象。 如果我执行console.log(data.username),我无法访问数据obejct的元素,这在控制台中显示为undefined。 我在函数getReportedInfo的范围之外创建了一个变量data1,并将通过success属性检索的数据分配给 在我尝试在函数外部显示data1的内容之后,这个变量。
答案 0 :(得分:1)
听起来data
是字符串而不是对象。您可以使用JSON.parse
将其转换为对象。请尝试以下代码。
function getReportedInfo(id) {
$.ajax({
url: 'includes/get_data.php',
type: 'POST',
data: {id:id},
dataType: 'json',
success: function(data) {
var dataObject = JSON.parse(data);
console.log(dataObject.username);
}
});
};
修改强>
在下面的评论中与OP讨论后,确定返回的对象data
位于如下结构中,并且已经是对象形式(不是字符串)
{
"0": {
id: 5,
username: "Anthony",
status: "accupied"
}
}
因此,以下代码应该有效。
function getReportedInfo(id) {
$.ajax({
url: 'includes/get_data.php',
type: 'POST',
data: {id:id},
dataType: 'json',
success: function(data) {
console.log(data["0"].username);
}
});
};
答案 1 :(得分:-2)
如果在php中你这样返回
<?php
echo json_encode($array);
// or
return json_encode($array);
在JavaScript中,您可以在尝试使用时使用它,现在,显然即使您在请求中指示它,也不会返回JSON,在这种情况下它使用解析:
function getReportedInfo(id) {
$.ajax({
url: 'includes/get_data.php',
type: 'POST',
data: { id:id },
success: function(data) {
var response = JSON.parse(data);
console.log(response.id); // return 5
}
});
};