2014-10-02 5 views
0

Я работаю с jqGrid, и в настоящее время у меня возникают некоторые проблемы, в основном из-за конфигурации для него.Как преобразовать строку JSON в объект Object Object Lite

В настоящее время я хочу сделать это:

var tableConfigJson = $treeTable.getMappedJson(); 

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

$ TreeTable мой объект на моей стороне сервера, что я ВОССТАНОВЛЕНИЕ с отображением скорости.

Теперь JSON, который я получаю с моего сервера, в порядке, однако, когда я передаю его jqGrid для настройки конфигурации для него, он не работает. Если я настрою конфигурацию в javascript, но я создаю конфигурацию как объект javascript, она отлично работает, однако, если я просто передаю 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" 

Проблема заключается в том, что параметры, которые используются для конфигурации, обрабатываются как объекты массива в местах, а не строки в стиле JSON. Поэтому эти параметры игнорируются. Мне нужно, чтобы это был стиль JSON, и тогда все работает.

Если мне нужно прояснить что-нибудь, просто сообщите мне, его поздно, и у меня было много кофе.

+0

Эта часть работает отлично, скорость прохладная, как это :). – Daniel

+0

Позвольте мне изменить код, чтобы это не вводило в заблуждение – Daniel

+0

Ну, если вы так говорите. То, что вы не объяснили тогда, точно так, как оно «не работает». Сообщаются ли ошибки? Вы пробовали некоторые 'console.log()' звонки, чтобы узнать, что происходит? Является ли 'tableConfigJson' действительно объектом или является строкой? – Pointy

ответ

2

Если tableConfigJson в настоящее время является строка JSON, как вы предлагаете, то вам просто необходимо разобрать его:

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

Если вас need it to work in older browsers, вы хотите включить a shim.

+0

Это определенно возможность. – Pointy

+0

Когда я попытался разобрать его, чтобы получить объект JS, он выдает мне ошибку, которая возникает, когда у вас уже есть объект JS. Ошибка «Неожиданный токен o» из того, что я прочитал, когда JSON уже разобран. – Daniel

+0

@ Даниэль, это правильно, похоже, что у вас уже есть объект. Добавьте 'console.log (tableConfigJson)', который будет записывать весь объект в [консоль браузера] (http://webmasters.stackexchange.com/questions/8525/how-to-open-the-javascript-console- в-разных браузерах) - и включите его в свой вопрос! Похоже, что он каким-то образом будет отличаться от литерального объекта, который вы пробовали и добились успеха. – Shai

Смежные вопросы