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


how to handle json encoded php mysql array

当我对进行编码时,我正试图从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

尝试在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. 相应地调整代码,以便您最终能够通过正确的键访问值

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

它返回的是对象数组,我相信如果您使用JSON库来解决您的问题

在您的php文件中,

echo json_encode($result);

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

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

您可以使用直接检查响应

console.log(returnData);

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

处理JSON数据

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

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

假设您的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""Little birds pitch by my doorstep"。现在您知道如何访问您的数据了。

由于我不知道你的JSON结构,我不能再帮你了。如果你用一些JSON代码更新你的问题以及你想做什么,我会更具体。

试试这个:

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");
});