1

我有一个非常奇怪的问题。我的 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 Doc。不是 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();
4

2 回答 2

4

您不需要stringify已经是字符串 ( xmlHttp.responseText) 的东西。该stringify方法应该用于 javascript 对象以将其序列化为 JSON 字符串。所以摆脱这种字符串化并简单地解析你已经拥有的 JSON 字符串(使用JSON.parse方法):

var response = JSON.parse(responseDoc);
于 2013-06-05T11:06:47.477 回答
2

您不需要对字符串进行字符串化:

var response = JSON.parse(responseDoc);
于 2013-06-05T11:07:31.340 回答