我有一个非常奇怪的问题。我的JSON.parse似乎不起作用。我也试过使用eval,但这也没有帮助。以下是我的代码:
var responseDoc = xmlHttp.responseText;
document.getElementById("debug1").innerHTML=responseDoc;
var response = JSON.parse(responseDoc);
document.getElementById("debug2").innerHTML=response.category;
我的responseDoc看起来像这样
{"id":null,"category":"dog","price":"4321","name":"new product 123","sku":"1234","success":true}
但是response.category是"undefined"
。任何想法为什么会这样?我花了好几个小时但却想不出来。非常感谢!
* 更新 * :
按照某些人的建议删除了stringify - >仍然没有工作。
如果我尝试下面的代码,我会得到“Uncaught SyntaxError:Unexpected token<”从控制台:
var response = JSON.parse(xmlHttp.responseText);
* 更新2 * :
发现问题。这是因为我的responseDoc正在获取HTML文档。不是JSON对象。不知道为什么会这样。这是我处理ajax请求的代码(我正在使用jsp):
JSONObject result = new JSONObject();
result.put("success",true);
result.put("id",request.getParameter("id"));
result.put("name", request.getParameter("name"));
result.put("sku",request.getParameter("sku"));
result.put("price",request.getParameter("price"));
result.put("category",request.getParameter("category"));
out.print(result);
out.flush();
答案 0 :(得分:4)
您不需要stringify
已经是字符串的内容(xmlHttp.responseText
)。应该在javascript对象上使用stringify
方法将其序列化为JSON字符串。所以摆脱这个字符串化并简单地解析你已经拥有的JSON字符串(使用JSON.parse
方法):
var response = JSON.parse(responseDoc);
答案 1 :(得分:2)
您不需要 stringify 字符串:
var response = JSON.parse(responseDoc);