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

只是不要让 JSP 将其打印为引号内的 JS 字符串语法(显然需要对其进行解析才能获得 JS 对象)。摆脱那些报价。JSON 已经采用正确的 JS 对象语法。这也是“JSON”的全部含义。

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

顺便说一句,在 JSP 中使用scriptlet是一种不好的做法。如果您已经在使用 JSP 2.0(已经使用了将近十年),只需使用EL

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

注意,也在这里,只是不要引用它。否则它会变成 JS 字符串而不是 JS 对象。


与具体问题无关,这里是否绝对有必要引入额外的 JSON/jQuery 步骤?为什么不直接使用例如JSTL让 JSP 在服务器端生成所需的 HTML 而不是在客户端生成 JS/jQuery?

于 2012-08-30T16:54:30.680 回答