在Javascript中读取php编码的JSON

在Javascript中读取php编码的JSON,php,javascript,ajax,json,Php,Javascript,Ajax,Json,我已经使用JSON_encode在php中创建了一个JSON对象,并试图通过AJAX在javascipt中显示该对象的某些值。我在接收来自php的响应时没有问题,但是当我尝试使用JSON符号访问响应的任何值时,我会变得“未定义” 代码片段: if (xmlhttp.readyState==4 && xmlhttp.status==200) { var response = xmlhttp.responseText; alert(response); alert(

我已经使用JSON_encode在php中创建了一个JSON对象,并试图通过AJAX在javascipt中显示该对象的某些值。我在接收来自php的响应时没有问题,但是当我尝试使用JSON符号访问响应的任何值时,我会变得“未定义”

代码片段:

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
输出:

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

编辑:感谢大家的回复。希望我能给大家打个勾,但我选择了最有用的回答。

您需要解析JSON:

if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
   var jdoc = JSON.parse(xmlhttp.responseText);
   alert(jdoc.data[0].cheese);
}

包括在旧浏览器中。

您需要解析JSON:

if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
   var jdoc = JSON.parse(xmlhttp.responseText);
   alert(jdoc.data[0].cheese);
}

包括在旧浏览器中。

您必须将响应转换为js对象

最简单的方法是使用eval():


您必须将响应转换为js对象

最简单的方法是使用eval():

这不是JSON对象。这是纯文本。 使用
var myObject=eval(“(“+myJSONtext+”)”)例如获取JSON(eval是邪恶的:)

这不是JSON对象。这是纯文本。
使用
var myObject=eval(“(“+myJSONtext+”)”)例如,要获取JSON(eval是邪恶的:)

您必须解析JSON。这可以通过一个简单的调用
eval
来实现,但这只能在您完全信任返回的服务器时实现,因为他可以让您的脚本执行所有操作

 var data = eval('('+response+')');
我建议您使用
json2.js
,这是一个小的javascript库,速度更快,可以为您处理解析

var data = JSON.parse(response);

它可以从

获取,您必须解析json。这可以通过一个简单的调用
eval
来实现,但这只能在您完全信任返回的服务器时实现,因为他可以让您的脚本执行所有操作

 var data = eval('('+response+')');
我建议您使用
json2.js
,这是一个小的javascript库,速度更快,可以为您处理解析

var data = JSON.parse(response);

它可以从

中获取,看起来响应是纯文本。 试试这个:

var response = xmlhttp.responseText;
var data = new Function("return "+xmlhttp.responseText)();

看起来响应是纯文本的。 试试这个:

var response = xmlhttp.responseText;
var data = new Function("return "+xmlhttp.responseText)();

您需要将该JSON解析回JavaScript对象,请参见{或者如果您不顾一切地使用
eval
,但这有安全风险}您需要将该JSON解析回JavaScript对象,请参见{或者如果您不顾一切地使用
eval
,但这有安全风险}请告诉我我正在编写的代码中是否有错误。谢谢请告诉我我正在写的代码中是否有错误。谢谢