javascript - 如何处理json编码的php mysql数组

标签 javascript php jquery

当我编码时,我试图从 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 对象定义字符串,无论它有多少级别(或者可能有一些限制,我不知道,可能基于客户端运行的系统的体系结构)。

因此:

  1. 删除外部 json_encode() 并仅保留对此函数的一次调用(就像一开始那样)
  2. 使用 console.log() 调试数据并查看哪个级别返回的内容
  3. 相应地调整您的代码,以便您最终能够通过正确的键访问值

除非您提供更多信息(例如 JSON 数据的示例),否则很难帮助您完成第 3 步。

关于javascript - 如何处理json编码的php mysql数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20544718/

相关文章:

javascript - MongoDB 客户端 > 无效操作,未指定操作

php - Laravel 的 array_sort 助手 DESC e ASC

php - 在PHP中使用SHA1登录表单

javascript - 使用 jQuery 以 Base64 缓存图像文件

javascript - 选择 XML AJAX 文档作为变量

javascript - Mustache(或 Handlebars)遍历两个列表

javascript - Angular - 在加载路由器之前获取路由器 url

javascript - 循环轮播中的 Jssor playTo()

php - 在 "ORDER BY"子句之后是否可以放置任何可能带来安全风险的内容?

php - 使用 Jquery 自动刷新多个 div