2012-08-30 4 views
2

SQL 쿼리 결과를 JSONArray로 JSP 페이지에 반환합니다. 이제는 데이터를 보여주고 싶습니다. 코드를 작성했지만 JSONArray에 더 많은 23 객체 eval이 포함되거나 JSON.parse 함수가 작동하지 않으면 JSONArray의 23 개 객체에 대해서만 잘 작동합니다. 이 문제를 해결하는 방법을 알려주십시오.자바 스크립트에서 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

** 평가판 **을 사용하지 마십시오. 안전하지 않으며 JSON.parse가 제대로 작동해야하지만 사용하지 않아도 데이터를 문자열로 출력하지 않아야합니다.) http : // www .json.org/js.html –

+0

'data.length'는 무엇을 제공합니까? – David

+1

유효한 JSON을 받고 있는지 확인 했습니까? http://jsonlint.com/ – gpojd

답변

3

그냥 (분명히 JS 객체를 얻기 위해 구문 분석 할 필요가있다) 따옴표 내에서 JS 문자열 구문으로 JSP 인쇄를하지 않습니다. 그 따옴표를 제거하십시오. JSON은 이미 적절한 JS 개체 구문을 사용하고 있습니다. 그것도 모두 "JSON"의 약자입니다. JSP에서이 poor practice입니다 스크립틀릿을 사용하는 방식으로


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

. 이미 JSP 2.0을 사용 중이라면 (이미 거의 10 년 동안), EL 만 사용하십시오.

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

참고로 여기서도 인용하지 마십시오. 그렇지 않으면 JS 객체 대신 JS 문자열이됩니다. 구체적인 문제에 관련없는


, 그것은 여분의 JSON/jQuery를 여기 단계 도입 절대적으로 필요하다? JSP로 클라이언트 쪽에서 JS/jQuery가 아닌 서버 측에서 원하는 HTML을 생성하게하려면 예를 들어 JSTL을 사용하면 어떨까요?

+0

귀하의 도움으로 모든 문제가 해결되었습니다. –

+0

+1, 특히 관련없는 댓글에 :-) – Bergi

+0

반갑습니다. – BalusC

관련 문제