2014-10-02 45 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

相關問題