2012-08-30 57 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