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 に答える