JSON.parse不起作用

时间:2013-06-05 11:05:39

标签: ajax json jsp parsing

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

2 个答案:

答案 0 :(得分:4)

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

var response = JSON.parse(responseDoc);

答案 1 :(得分:2)

您不需要 stringify 字符串:

var response = JSON.parse(responseDoc);