当我编码时,我试图从 MySQL
表获取返回的结果
echo json_encode($result);
我使用javascript
来抓取它...
$.ajax({
url: "helpers/data.php",
type: "GET",
dataType:"json",
success: function(returnData){
document.write(returnData);
}
这就是它返回的内容...
[object Object],[object Object],[object Object],[object Object]
我可以通过这样做来修复它的温度...
echo json_encode(json_encode($result));
然后它返回正确的数组...
但使用相同的jquery
,它返回的变量为未定义
最佳答案
尝试在 Chrome 或 Firefox(或任何合适的浏览器)中使用 console.log(returnData)
并查看开发人员工具/控制台输出,以结构化方式了解您的数据.
document.write()
无法从 JavaScript 对象提供可读的结构化输出。因此,它返回[object Object]
作为真实存在的表示。
在您的情况下发生的情况是,封装的 json_encode()
调用基本上执行以下操作:第二个调用(在第一个调用内)将已经返回有效的 json 数据字符串,然后第一个调用将返回将整个 json 对象包装在另一个对象中,例如:
// begin json
{
// begin encapsulated json
{
header: 'any data'
}
// end of encapsulated json
}
// end json
这不是你想要的。在第一级迭代返回的数据只会给你一次迭代:整个 json 对象包装在外部对象中。因此 .header
无法返回任何内容,因为它根本不存在。
不需要在第一个 json_encode()
中包装第二个 json_encode()
,因为 json_encode()
已经将提供的数据递归地转换为 JSON 对象定义字符串,无论它有多少级别(或者可能有一些限制,我不知道,可能基于客户端运行的系统的体系结构)。
因此:
- 删除外部
json_encode()
并仅保留对此函数的一次调用(就像一开始那样) - 使用
console.log()
调试数据并查看哪个级别返回的内容 - 相应地调整您的代码,以便您最终能够通过正确的键访问值
除非您提供更多信息(例如 JSON 数据的示例),否则很难帮助您完成第 3 步。
关于javascript - 如何处理json编码的php mysql数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20544718/