2012-05-02 71 views
0

我在jqGrid的工作,返回JSON是的jqGrid addJSONData不起作用

{"total":1,"page":1,"records":2,"rows":[{"projectId":"1022","name":"john"}]} 

然後在功能我叫

var jsongrid = eval("("+data+")");     
var thegrid = jQuery("#projectList")[0];      
thegrid.addJSONData(jsongrid); 

,但它給我的錯誤:對象爲空或未定義。不知道爲什麼。我沒有使用json reader。

順便說一句,你知道如何使用set方法來設置「total」,「page」,「records」嗎?

回答

2

我想你嘗試調用addJSONData方法之前網格將與尊重jQuery("#projectList").jqGrid({...});

創建的addJSONData的使用實際上總是不需要(見一個從本人對上述here第一帖)。以同樣的方式,你不應該使用邪惡的方法eval。一個使用jQuery.parseJSONJSON.parse代替。

我想你應該使用datatype: 'json'來解決你的問題。你應該發佈更多的代碼來向你展示如何在你的案例中使用其他jqGrid選項。

已更新:從您之前的問題看來,您似乎只想通過單擊「搜索」按鈕將其他數據發送到服務器。在這種情況下,我建議修改代碼以下

var $grid = $("#projectList"); 

$grid.jqGrid({ 
    url: 'user595234.json', 
    datatype: "json", 
    serializeGridData: function (data) { 
     return $.param(data) + '&' + $("#project_search_form").serialize(); 
    }, 
    jsonReader: {id: "projectId", repeatitems: false}, 
    colNames: ['ID', 'Name'], 
    colModel: [ 
     {name: 'projectId', width: 255}, 
     {name: 'name', width: 255} 
    ], 
    rowNum: 10, 
    rowList: [10,20,30], 
    pager: '#projectPager', 
    sortname: 'projectId', 
    viewrecords: true, 
    sortorder: "desc", 
    caption: "Simple data manipulation", 
    height: "auto" 
}).jqGrid("navGrid", "#projectPager", {edit: false, add: false, del: false}); 

$("#search").click(function() { 
    $grid.trigger("reloadGrid", [{page: 1}]); 
}); 

the demo我從使用jQuery.serialize的例子得到的只是形式和修改了一點。它顯示您需要

enter image description here

此外,一樣可以容易相對於提琴手或螢火蟲的驗證數據,該URL將BA附加有附加的參數,如下面

...?_search=false&nd=1336057299806&rows=10&page=1&sidx=projectId&sord=desc&a=1&b=2&c=3&d=4&e=7&f=8 

的標準參數

_search=false&nd=1336057299806&rows=10&page=1&sidx=projectId&sord=desc 

將與從參數的形式被附加

a=1&b=2&c=3&d=4&e=7&f=8 

在某些情況下,可以選擇使用jQuery.serializeArray。它允許以另一種格式(如JSON)對數據進行序列化,或以某種其他格式轉換數據(請參閱here),使用$.extend可以輕鬆地將其與標準jqGrid參數合併。

+0

更多細節在這裏http://stackoverflow.com/questions/10393256/jqgrid-not-display-properly – user595234

+0

@ user595234:我更新了我的答案。 – Oleg