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

时间:2013-12-12 13:21:43

标签: 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,它会将变量返回为undefined

6 个答案:

答案 0 :(得分:1)

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

因此:

  1. 删除外部json_encode(),只保留对此功能的一次调用(正如您在开头时所做的那样)
  2. 使用console.log()调试您的数据并查看在哪个级别返回的内容
  3. 相应地调整您的代码,以便您最终能够通过正确的密钥访问这些值
  4. 除非您提供更多信息(例如您的JSON数据示例),否则很难为步骤3提供帮助。

答案 1 :(得分:0)

它正在返回对象数组,我相信如果你使用JSON库解决你的情况

答案 2 :(得分:0)

在你的php文件中,

echo json_encode($result);

在jquery中,$ .ajax的成功回调,

returnData.forEach(function(elem) {
    console.log(elem);
    // do something with the individual objects
});

您可以使用

直接查看响应内容
console.log(returnData);

答案 3 :(得分:0)

不要做双json_encode!在javascript中,你收到的是对象,而不是字符串,所以你不能简单地写它。如果您需要在html中使用对象的字符串表示,请使用JSON.stringify(data)。但你可能需要以另一种方式处理对象。

答案 4 :(得分:0)

处理JSON数据

  $.getJSON( "ajax/test.json", function( data ) {
        var items = [];
        $.each( data, function( key, val ) {
        items.push( "<li id='" + key + "'>" + val + "</li>" );
    });

此示例取自this page。 我知道它的功能有点不同但概念是一样的。

假设您的JSON有效且其他所有内容,则返回的data是一个对象。因此,您必须处理迭代才能获得一些值。在该示例中,您可以看到允许您获得所需内容的$.each循环。

{
   "one": "Singular sensation",
   "two": "Beady little eyes",
   "three": "Little birds pitch by my doorstep"
}

这是一个JSON示例。在上一个示例中,key将是onetwothree,而val将是"Singular sensation""Beady little eyes"或{ {1}}。现在您知道如何访问您的数据了。

由于我不知道你的JSON结构,我无法再帮你了。如果您使用某些JSON代码更新您的问题以及您要尝试做什么,我会更具体。

答案 5 :(得分:0)

试试这个:

PHP:

header('Content-Type','application/json');
echo json_encode($result,JSON_FORCE_OBJECT);

AJAX:

$.ajax({
    url : "helpers/data.php",
    dataType : "json"
}).done(function(data) {
    alert(data);
    return callback(null, data);
}).fail(function() {
    return callback("AJAX error");
});