0

私は今2日間検索し、考えられるすべてのことを試しました. GSON を使用して JSON 配列を作成します。jquery経由でJavascriptに送信する前にjson文字列を印刷すると、次のようになります。

[{"var1":"hi","var2":"this","var3":"is"}] 

は、私にはよく見えますよ。次の2つの方法でjsに送信しようとしました:

String json = gson.toJson(googData, listType);
response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");
response.getWriter().write(json);

String json = gson.toJson(googData, listType);
<%= json %>

ここに私のjsコードがあります:

$.getJSON("testgoogle.jsp", function(json) {
    $.each (json, function(k, v) {
        alert(v.val1);
    });
});

かなり単純ですよね?$.get に変更して、文字列を確認できます。もし私がアラート(k)をすると、それは一度だけ0をアラートします。JSON文字列で空白を渡している疑いがあります。jsp から返されたものを警告すると、警告 ("hi") と言うよりも警告ボックスの下に表示されます。あなたはどこにあるのか知っています!はアラート ボックスにあり、「こんにちは」はその真ん中にあります。画像 <%= "hi" %> を jsp から送信すると、! の下にあります。<%= "hi" %> を一番上まで移動したので、jsp は次のようになりました。

<%@page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%= "hi" %>

ご覧のとおり、ストローをつかんでいます。これにより、! の末尾に「こんにちは」が返されました。jsp の行数が多いほど、「こんにちは」をアラート ボックスの下部に移動します。あと、なんか変。これをjspの一番上に残しておくと:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

それは実際に私のアラートに出力されます。

さらに情報が必要な場合はお知らせください。

解決策: キーが var1 のときに val1 を呼び出そうとしました。わお!そのすべての時間を取り戻すことはできません ;) 正しいコードは、val1 が var1 であることを除いて、上記と同じです。また、eval(json) で試してみましたが、参考までに動作しました。みんなを助けてくれてありがとう!

4

3 に答える 3

1

$.getJSON()

成功のコールバックには返されたデータが渡されます。これは通常、JSON 構造によって定義され、$.parseJSON() メソッドを使用して解析される JavaScript オブジェクトまたは配列です。また、応答のテキスト ステータスも渡されます。

jQuery によって既に解析されているため、文字列を自分で「解析」する必要はありません。

$.getJSON("testgoogle.jsp", function(json) {
    $.each (json, function(k, v) {
        alert(v.val1);
    });
});
于 2012-06-29T21:38:49.793 に答える
0

$.getJSON では、jsoninfunction(json) {はすでに JavaScript オブジェクトであるため、評価しません。

于 2012-06-29T21:37:11.850 に答える
0

これを試して :

$.getJSON("testgoogle.jsp", function(json) {
$.each (json[0], function(k, v) {
    alert(v);
    });
});
于 2012-06-29T22:40:40.300 に答える