如何处理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对象定义字符串,无论它有多少级别(或者可能有一些限制,我不知道,可能是基于客户端运行的系统架构)。
因此:
- 删除外部
json_encode()
并只保留对该函数的一个调用(正如您在开始时所做的那样) - 使用
console.log()
调试数据并查看在哪个级别上返回了什么 - 相应地调整代码,以便您最终能够通过正确的键访问值
除非您提供更多信息(例如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
将是one
、two
和three
,而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");
});
- 将phonegap图像发布到php/mysql-图像字段从发布请求中消失
- 如何使用jQueryPOST将get变量从JavaScript传递到PHP-Mysql
- 如何使用PHP+MySQL Ajax自动完成jQuery并传递给JavaScript
- 为什么PHP MySQL INSERT通过AJAX调用只是偶尔发生
- 将动态feild数据存储到jquery-mobile和php-mysql中的数据库中
- PHP MySQL 在一个页面和一个查询中插入具有多行的数据
- 多行 PHP MySQL 插入
- 我怎样才能为一个简短的项目托管 HTML/PHP/MySQL
- 如何处理json编码的php-mysql数组
- 根据php/mysql变量中的文本行调整文本区域的大小
- 我们可以用grunt设置一个php/mysql环境吗
- php/mysql搜索结果-当类型>1,同时保持其他类型不>1-代码点火器
- PHP/MySQL:将用户输入保存到数据库
- 使用PHP/MYSQL在phonegap中注册;不起作用
- PHP MySQL值传递到JavaScript
- 使用Javascript将变量传递到php-MySQL脚本
- 如何检查PHP/MYSQL中是否已经存在USERNAME
- 呈现Highcharts的问题-通过PHP/MySQL填充
- 从 PHP MySQL 进行地理编码的动态标记
- 地理编码不工作在php mysql提交表单