2

SQL クエリの結果を JSONArray として JSP ページに返しています。今、私はデータを表示したいと思います。コードを作成しましたが、JSONArray に 23 個のオブジェクト eval または JSON.parse 関数が含まれていない場合、JSONArray 内の 23 個のオブジェクトに対してのみ正常に動作します。この問題を解決する方法を教えてください。

以下は、この JSONArray を反復処理するために作成した JS コードです。

var data = '<%=(JSONArray) request.getAttribute("resultArray")%>';
data = eval("(" + data + ")");
$(document).ready(function() {
   var table = $('<table/>').appendTo($('#column'));

   var rows = $('<tr/>').appendTo(table);
    $.each(data, function(rowid, row) {
       var rows = $('<tr/>').appendTo(table);
       $.each(row, function(column, data) {
           ($('<td/>').text(data)).appendTo(rows);
       })}); 
});
4

1 に答える 1

3

引用符で囲まれたJS文字列構文としてJSPに出力させないでください(JSオブジェクトを取得するには明らかに解析する必要があります)。それらの引用符を取り除きます。JSONはすでに適切なJSオブジェクト構文になっています。それが「JSON」の略でもあります。

var data = <%=request.getAttribute("resultArray")%>;
$(document).ready(function() {
    // ...
});

ちなみに、JSPでスクリプトレットを使用するのはお勧めできません。すでにJSP2.0を使用している場合(すでに10年近くリリースされています)、ELを使用してください。

var data = ${resultArray};
$(document).ready(function() {
    // ...
});

ここでも、引用しないでください。それ以外の場合は、JSオブジェクトではなくJS文字列になります。


具体的な問題とは関係なく、ここに追加のJSON / jQueryステップを導入することが絶対に必要ですか?たとえばJSTLを使用して、JSPがクライアント側のJS / jQueryではなく、サーバー側で目的のHTMLを生成できるようにしないのはなぜですか。

于 2012-08-30T16:54:30.680 に答える