2011-02-24 5 views
3

아래 코드는 자바 스크립트 객체를 만들고 JSON으로 변환 한 다음 jqGrid에로드하려고 시도합니다. 나는 위키 예제를 따르고 있으며, 내가 그들의지도를 매우 정확하게 따라 갔다고 느낀다. 그러나 여전히 운이 없다. 누가 누락 된 링크가 여기에 있는지 볼 수 있습니까?JSON 데이터를 jqGrid에 매핑

jQuery(document).ready(function() { 

    var gridData = { 
     total: 2, 
     page: '1', 
     records: '12', 
     rows: [ 
         { id: '1', col1: 'cell11', col2: 'cell12', col3: 'cell13' }, 
         { id: '2', col1: 'cell21', col2: 'cell22', col3: 'cell23' } 
         ] 
    }; 

    gridData = $.toJSON(gridData); 
    $('#jqgrid').jqGrid({ 
     data: gridData, 
     datatype: 'json', 
     colNames: ['Col1', 'Col2', 'Col3'], 
     colModel: [ 
         { name: 'col1' }, 
         { name: 'col2' }, 
         { name: 'col3' } 
         ], 
     jsonReader: { 
      root: 'rows', 
      total: 'total', 
      page: 'page', 
      records: 'records', 
      repeatitems: false, 
      id: '0' 
     } 
    }) 
+0

하나 더 말 :

가장 좋은 방법은 항목의 단지 배열을 사용하는 것입니다 나는 과거에'$ .toJSON'을 사용하지만 더 나은 변경 및 관리는 방법'JSON을 지원했다. stringify'는 최신 브라우저에서 구현 ** **되었습니다. 따라서 https://github.com/douglascrockford/JSON-js 또는 http://www.json.org/js.html에서 json2.js를로드하고 나중에 파일에서 JSON.stringify를 사용하는 것이 좋습니다. . 브라우저가 네이티브 서포트하고있는 경우, json2.js의'JSON.stringify '의 구현이 올바르지 않은 경우, json2.js가 그것을 사용합니다. – Oleg

답변

5

데이터를 JSON 문자열로 변환 할 필요가 없습니다. jqGrid는 데이터를 다시 변환해야합니다. 이 경우 datatype:'jsonstring'datastr:gridData을 사용해야합니다.

var gridData = [ 
    { id: '1', col1: 'cell11', col2: 'cell12', col3: 'cell13' }, 
    { id: '2', col1: 'cell21', col2: 'cell22', col3: 'cell23' } 
]; 
$('#jqgrid').jqGrid({ 
    data: gridData, 
    datatype: 'local', 
    ... 
}); 
+1

올렉, 훌륭한 통찰력을 가져 주셔서 감사합니다. 당신의 제안은 완벽하게 작동했습니다. 나는 객체를 JSON 형식이 아닌 문자열로 변환한다는 것을 깨달았어야했다. 이제는 JSON 객체가 네이티브 JS 형식이라는 것을 이해합니다. 그래서 JSON 객체를 만들고 데이터 유형 'json'을 사용하여 그리드를로드하려면 다음과 같은 질문을하게됩니다. 어떻게 변경합니까? (1 단계는 stringify 호출을 제거하는 것입니다). –

+1

@ 존 : JSON 형식의 오해가 있습니다. 'var gridData = [{id :'1 ', col1 :'cell11 ', col2 :'cell12 ', col3 :'cell13 '}, {id :'2 ', col1 :'cell21 ', col2 :'cell22 ', col3 :'cell23 '}];'** 아닙니다 ** JSON입니다. 하나의 구문을 사용하여 다른 객체의 배열 인 JavaScript ** 객체 **를 정의합니다. JSON 버전은 ** string **'var jsonStr = '[{ "id": "1", "col1": "cell11", "col2": "cell12", "col3": "cell13"}입니다. , { "id": "2", "col1": "cell21", "col2": "cell22", "col3": "cell23"}] '; 둘 다 가까 이서 보이지만 이들은 ** 다른 ** 것들입니다. – Oleg

+3

@ John :'datatype : 'json''을 사용하려면 JSON 데이터를 웹 서버에서 가져 오거나 게시해야합니다. 가장 단순한 상황에서는 텍스트 파일에 데이터를 저장하고 텍스트 파일을 웹 서버에 저장하고 텍스트 타일에 대한 URL을 jqGrid의 'url' 매개 변수 값으로 사용해야합니다. http://www.jsonlint.com/에서 JSON 텍스트를 확인하는 것이 좋습니다. 데모로 http://www.ok-soft-gmbh.com/jqGrid/John.txt 및 http://www.ok-soft-gmbh.com/jqGrid/John.htm을 참조하십시오. – Oleg

관련 문제