2012-08-30 42 views
2

我将SQL查询结果作为JSONArray返回给JSP页面。现在我想显示数据。我已经写了一段代码,但只有JSONArray中的23个对象工作正常,如果JSONArray包含更多的23对象eval或JSON.parse函数不起作用。请让我知道如何解决这个问题。如何解析Java脚本中的JSON数组

下面是我编写的用于迭代此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); 
     })}); 
}); 
+1

不要使用** eval **,这是不安全的,JSON.parse应该可以正常工作,但不需要使用它,只是不要将数据输出到字符串中;)http:// www .json.org/js.html –

+0

'data.length'给你什么? – David

+1

您是否验证过您获得有效的JSON? http://jsonlint.com/ – gpojd

回答

3

只是不要让JSP将它作为引号中的JS字符串语法打印(显然需要解析才能获得JS对象)。摆脱这些报价。 JSON已经在适当的JS对象语法中。这也是所有"JSON"代表的。

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

顺便说一句,使用小脚本在JSP是poor practice。如果你已经使用了JSP 2.0(已经有将近10年了),只需使用EL即可。

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

请注意,这里也不要引用它。它变成了JS字符串而不是JS对象。


无关的具体问题,是绝对有必要推出额外的JSON/jQuery的步骤吗?为什么不仅仅使用JSTL来让JSP在服务器端生成所需的HTML而不是客户端的JS/jQuery?

+0

我的问题已解决,谢谢大家的帮助。 –

+0

+1,特别是在无关的评论:-) – Bergi

+0

不客气。 – BalusC