当我编码
时,我正试图从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
答案 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对象定义字符串,无论它有多少级别(或者可能)有一些限制,我不知道,可能是基于客户端运行的系统架构。)
因此:
json_encode()
,只保留对此功能的一次调用(正如您在开头时所做的那样)console.log()
调试您的数据并查看在哪个级别返回的内容除非您提供更多信息(例如您的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)
$.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
将是one
,two
和three
,而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");
});