2014-10-02 5 views
0

jqGrid와 함께 작업하고 있는데 현재 주로 설정 때문에 일부 문제가 있습니다.JSON 문자열을 JavaScript Object Literal으로 변환하는 방법

현재 나는이 작업을 수행 할 수 :

var tableConfigJson = $treeTable.getMappedJson(); 

    jQuery(function() { 
     jQuery("#grid").jqGrid(tableConfigJson); 
    }); 

$ 트리 테이블 내가 속도 매핑으로 검색하고 내 서버 측에서 내 개체입니다.

지금 내 서버에서 가져 오는 JSON은 괜찮습니다. 그러나 구성을 jqGrid에 전달하면 작동하지 않습니다. 만약 내가 자바 스크립트에서 설정을 설정하지만, 잘 작동합니다 자바 스크립트 개체로 구성을 만들지 만, 난 그냥 구성으로 JSON을 통과하면 작동하지 않습니다. 이제 내 질문에이 문제를 해결할 수있는 쉬운 방법이 있습니까? 또는 JSON을 사용하여 구성을 다시 매핑해야합니다.

내가 그러나이 작업을 수행 할 경우

:
jQuery(function() { 


jQuery("#grid").jqGrid({ 
    treeGrid: true, 
    treeGridModel: 'adjacecncy', 
    ExpandColumn: 'name', 
    datatype: "local", 
    mtype: 'Get', 
    colNames: ['id','Name','MenuId','Menu Name'], 
    colModel: [ 
     {name:'RowId',index:'RowId',width:300,fixed:true}, 
     {name:'Name',index:'Name',width:300,fixed:true}, 
     {name:'MenuId',index:'MenuId',width:300,fixed:true}, 
     {name:'MenuName',index:'MenuName',width:300,fixed:true}, 
    ], 
    root:[ 
     {id:"1",Name:"Main Menu", MenuId:"1",MenuName:"Menu1"}, 
     {id:"2",Name:"Main Menu1",MenuId:"2",MenuName:"Menu2"}, 
     {id:"3",Name:"Main Menu2",MenuId:"3",MenuName:"Menu3"} 
    ], 
    pager: '#dvtreegridsamp', 
    Caption: 'example' 
)}; 

그런 다음 그것을 작동합니다.

UPDATE :

이 내 개체에 대한 콘솔의 출력은,하지만 난 문제가 지금가 무엇인지 알 것 같아요.

Object {datatype: "local", data: Array[3], colNames: Array[2], colModel: Array[2], height: "auto"…}ExpandColumn: "id" 
caption: "I am SAD" 
colModel: Array[2]0: Object1: Objectlength: 2__proto__: Array[0]colNames: Array[2] 
data: Array[3] 
datatype: "local" 
height: "auto" 
sortname: "id" 
treeGrid: "true" 
treeGridModel: "adjacency" 
treedatatype: "local" 

config에 사용되는 매개 변수는 JSON 스타일 문자열이 아니라 장소의 배열 개체로 구문 분석됩니다. 따라서 이러한 매개 변수는 무시됩니다. JSON 스타일이 필요하고 모든 것이 작동합니다.

내가 무엇인가를 명확히해야 할 필요가 있다면, 그 늦은 시간과 나는 많은 커피를 마셨다.

jQuery("#grid").jqGrid(JSON.parse(tableConfigJson)); 

당신 need it to work in older browsers 경우 a shim을 포함 할 수 있습니다 : tableConfigJson 만약

+0

그 부분은 잘 작동하며, 속도는 다음과 같이 차갑습니다. :) – Daniel

+0

코드를 편집하여 오해의 소지가 없도록하십시오. – Daniel

+0

글쎄. 당신이 다음에 설명하지 않은 것은 그것이 "작동하지 않는"방법입니다. 보고 된 오류가 있습니까? 당신은'console.log()'호출을 시도해 어떤 일이 일어나고 있는지 보았는가? 'tableConfigJson'은 실제로 객체입니까? 아니면 문자열입니까? – Pointy

답변

2

은 제안처럼, 당신은 단지 그것을 분석 할 필요가, 현재 JSON 문자열입니다.

+0

이것은 확실히 가능합니다. – Pointy

+0

JS 개체를 가져 오기 위해 구문 분석을 시도했지만 이미 JS 개체가있을 때 발생하는 오류가 발생합니다. JSON이 이미 파싱 된 시점에서 읽은 부분의 오류는 "예상치 않은 토큰 o"입니다. – Daniel

+0

@Daniel이 맞습니다. 이미 개체가있는 것 같습니다. 전체 객체를 [브라우저 콘솔]에 로그하는'console.log (tableConfigJson)'을 추가하십시오. (http://webmasters.stackexchange.com/questions/8525/how-to-open-the-javascript-console- in-different-browsers) - 귀하의 질문에 포함 시키십시오! 그것은 당신이 시도하고 성공한 리터럴 객체와 어떤면에서 다른 것처럼 보입니다. – Shai

관련 문제