1

サーブレットから返された Json オブジェクトを ajax で解析できません。

そこの相対フィールドにjsonオブジェクトの値を入れる必要があります

私のJavaコードから、以下の文字列をJSONの形式で送信しています

String  webVisitorDetails = "{"+"companyName : \""+webVisitor.getCompanyName()+ "\","+
                                                "address : \""+webVisitor.getProfessionalAddress()+ "\","+
                                                "city : \""+webVisitor.getCity()+ "\","+
                                                "zipCode : \""+webVisitor.getZipCode()+ "\","+
                                                "clientId : \""+webVisitor.getCustomerAccountNumber()+ "\"}";

アヤックスで

$.ajax({
    url: "ships",
    data: {
        email: email.toString()
    },
    success: function(data) {
        $.each(data, function(k, v) {
            console.log(k + " Value " + v);
            $("#city").text(v.city);
            $("#zipcode").text(v.getZipCode);
            $("#Adress").text(v.getProfessionalAddress);
        });
    },
    error: function(data) {
        console.log("error:", data);
    },
    type: "post",
    datatype:"json",
});
4

3 に答える 3

2

jQuery の設定ではdataTypeT が大文字であることに注意してください。JSON の解析を手動で行うには、parseJSON関数を使用します。ただし、Content-Typeサーブレット応答の を に設定するapplication/jsonと、データ型は自動検出されます。

これを修正した後: 動作しますか? ハンドラのdata引数の値は?success

console.debug(data);

Neal が既に述べたように、JSON の解析では、jQuery 1.4 から始まる有効な JSON 文字列が必要です。JSON jsonlint.comを検証できます。

jQuery 1.4 では、JSON データは厳密な方法で解析されます。不正な形式の JSON は拒否され、解析エラーがスローされます。(適切な JSON 形式の詳細については、json.org を参照してください。)

JSON 文字列の手動構築を回避するには、JSON-javaプロセッサ ( iNan のコメントから) やjson.orgにリストされている他の Java 実装などを使用します。

于 2012-07-13T12:31:32.243 に答える
0

単一の逆コンマ (') が原因で問題が発生している場合は、次のようにします。

jQuery.parseJSON(data.replace(/'/g, '"'))

その場合、それはあなたのために働くはずです...

于 2012-07-13T12:52:53.803 に答える
0

あなたのjson文字列が正しくありません

キーは二重引用符で囲む必要があります。

こちらの要件をお読みください

于 2012-07-13T12:27:31.413 に答える