私は今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) で試してみましたが、参考までに動作しました。みんなを助けてくれてありがとう!