2014-10-02 82 views
0

我正在使用jqGrid,目前我遇到了一些问题,主要是因为它的配置。如何将我的JSON字符串转换为JavaScript对象文字

目前,我想这样做:

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 2014-10-02 15:10:41

+0

让我编辑代码,以免误导 – Daniel 2014-10-02 15:11:34

+0

如果你这么说的话。你没有解释的是,它究竟是如何“不起作用”。是否有错误报告?你有没有尝试过一些'console.log()'调用来看看发生了什么? 'tableConfigJson'确实是一个对象还是一个字符串? – Pointy 2014-10-02 15:11:40

回答

2

如果tableConfigJson目前JSON字符串,像你这样的建议,那么你只需要解析它:

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

如果need it to work in older browsers,你要包括a shim

+0

这绝对是一种可能性。 – Pointy 2014-10-02 15:13:33

+0

当我试着解析它来获得一个JS对象时,它会引发一个错误,当你已经有一个JS对象时就会发生这个错误。从JSON已经被解析的时候我读过它的错误是“Unexpected token o”。 – Daniel 2014-10-02 15:19:44

+0

@丹尼尔是正确的,听起来像你已经有一个对象。添加一个'console.log(tableConfigJson)',它将把整个对象记录到[浏览器控制台](http://webmasters.stackexchange.com/questions/8525/how-to-open-the-javascript-console-在不同的浏览器中) - 并将其包含在您的问题中!这听起来好像和你试过并成功的字面对象有所不同。 – Shai 2014-10-02 15:22:10

相关问题