0

データベースに保存されているJSON文字列があります。JSP ページの 1 つでこの文字列を取得し、文字列または JSON オブジェクトを Javascript 関数に渡せるようにしたいと考えています。関数は、テスト目的でこれだけです

function test(h){

alert(h);
}

これで、データベースから JSON 文字列を正常に取得できるようになりました。取得していることを確認するために画面に出力しましたが、このように渡すと

        <input  type="button" 
                                name="setFontButton" 
                                value="Set" 
                                class="form_btn_primary"
                                onclick="test('<%=theJSON%>'); return false;"/>   

何も起こりません。firebug を使用して何が問題なのかを確認したところ、無効な文字があると表示されました。

それで、JSONオブジェクトを次のように渡そうとしました

Widget widg = mapper.readValue(testing.get(0), Widget.class);

次に、それを渡します

onclick="test('<%=widg%>'); return false;"/>

これはエラーなしで渡され、オブジェクト名を警告しますが、解析できません。オブジェクトは、ウィジェットクラスが保存されている場所のパッケージ名のように入ってきます

com.package.mode.Widget@ba8af9 

Stringify を使用してみましたが、この Jackson JSON オブジェクトでは機能しないようです。

すべてが失敗した後、データベースから文字列を取得し、base64 でエンコードするという最後の手段を試しました。ただし、これを行うとこれも失敗します

String test = Base64.encode(theString);

ただし、それを行う場合は、画面に出力してから、出力されたものをコピーして送信するとうまくいくので、それがなぜなのかよくわかりません。

誰かが私が間違っていることを教えてください。私は非常に多くの異なるソリューションを試しましたが、何も機能していません。

JSON文字列は、このようにデータベースに保存されます

{ "id":1, "splits":[ { "texts":[ { "value":"Test", "locationX":3, "locationY":-153, "font":{ "type":"標準"、"サイズ":"中"、"太字":false、"色":"5a5a5a"、"斜体":false } } ] } ] }

誰かが私を直接の方向に向けることができれば、とても感謝しています!!

編集:

他の誰かが同じ問題を抱えている場合は、JSP から JS 関数に JSON を渡すためにこれを行います

<%=theJSON.replaceAll("\"", "\\\'")%>

これにより、JSON を渡すことができます。

次に、JavaScriptで通常のJSON形式に戻します

theJSON = theJSON.replace(/'/g,'"');

うまくいくはずです

4

2 に答える 2

2

onclick を囲む二重引用符と JSON 内の二重引用符の組み合わせが混乱を招く可能性があると思います。JSON を手動で入力したかのように考えてください。次のようになります。

onclick="test('{ "id":1, "splits":[ { "texts":[ { "value":"Test", "locationX":3, "locationY":-153, "font":{ "type":"Normal", "size":"Medium", "bold":false, "colour":"5a5a5a", "italics":false } } ] } ] }'); return false;"

前の二重引用符idは、実際には次の二重引用符を閉じますonclick=(ページのソースを見て、これを確認できるはずです)。onclick を次のように指定してみてください。

onclick='test(\'<%=theJSON%>\'); return false;'
于 2012-04-24T14:17:51.390 に答える
0

次の手順に従うことができます

  1. ジョン文字列を取得する
  2. jackson またはその他の JSON jar ファイルを使用して、json 文字列を json 配列に変換し、out.println を使用して文字列を出力します。
  3. json文字列を出力するこのjspを呼び出します
  4. firebug をチェックインすると、json が表示されます。
  5. Json 文字列が出力されない場合は、json 形式に問題がある可能性があります。

これは json 美化のための優れた Web サイト ( http://jsbeautifier.org/ ) で、実際に文字列が読みやすくなっています。

ありがとうございます

于 2012-04-24T17:15:17.453 に答える