我使用json_encode在php中创建了一个JSON对象,并尝试通过AJAX在javascipt中显示该对象的某些值。我没有收到来自php的响应的问题,但是当我尝试使用JSON表示法访问响应的任何值时,我得到'undefined'。
代码段:
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
var response = xmlhttp.responseText;
alert(response);
alert(response.data);
}
输出:
{"data":[{"cheese":"pork"},{"cheese":"chicken"}]} // Yes, I'm hungry right now.
undefined
编辑:感谢大家的回复。希望我能给你一个复选标记,但我选择了最有帮助的回复。
答案 0 :(得分:2)
你必须解析json。这可以通过对eval
的简单调用来完成,但只有在您完全信任返回的服务器时才能这样做,因为他可以让您的脚本执行所有操作。
var data = eval('('+response+')');
我建议使用json2.js
的方式,这是一个较快的小javascript库,可以为你处理解析。
var data = JSON.parse(response);
获取
答案 1 :(得分:1)
您需要解析JSON:
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
var jdoc = JSON.parse(xmlhttp.responseText);
alert(jdoc.data[0].cheese);
}
在旧浏览器中加入json2.js。
答案 2 :(得分:1)
您必须将响应转换为js对象。
最简单的方法是使用eval():
eval('var result = ' +response);
alert(result.data);
答案 3 :(得分:1)
var response = xmlhttp.responseText
这不是JSON对象。这是纯文本。
例如,使用var myObject = eval('(' + myJSONtext + ')');
来获取JSON(eval是邪恶的:)
答案 4 :(得分:1)
看起来响应是纯文本。 试试这个:
var response = xmlhttp.responseText;
var data = new Function("return "+xmlhttp.responseText)();