2013-02-15 101 views
0

我對jquery很新,因此需要您的幫助。jqgrid json url不能正常工作

我想使用jqGrid與JSON網址,但無法使用它。 HTM頁面不顯示任何數據。

$(function() { 
    "use strict"; 
    $('#list').jqGrid({ 
     datatype: 'json', 
     url: 'json_url', 
     caption: 'Prospect Finder', 
     gridview: true, 
     height: "auto", 
     colNames: ['Partner','First Name', 'Last Name', 'Organization'], 
     colModel: [ 
      {name: 'PARTNER', jsonmap: 'PARTNER' }, 
      {name: 'NAME_FIRST',jsonmap: 'NAME_FIRST' }, 
      {name: 'NAME_LAST', jsonmap: 'NAME_LAST' }, 
      {name: 'NAME_ORG1', jsonmap: 'NAME_ORG1' } 
     ], 
     jsonReader: { 
      repeatitems: false, 
      id: "PARTNER", 
      root: function (obj) { 
       return obj; 
      } 
     } 
    }); 
}); 

這是我的JSON數據

{"itab":[ { "PARTNER":"0061000220", "NAME_FIRST":"", "NAME_LAST":"", "NAME_ORG1":"GTA Central" }, { "PARTNER":"0061000221", "NAME_FIRST":"", "NAME_LAST":"", "NAME_ORG1":"GTA West" }, { "PARTNER":"0061000222", "NAME_FIRST":"", "NAME_LAST":"", "NAME_ORG1":"GTA East" }, { "PARTNER":"0041000141", "NAME_FIRST":"", "NAME_LAST":"", "NAME_ORG1":"Office Systems" } ]} 

有人可以plz幫助我嗎?

謝謝,DJ

+0

你有一個額外逗號在這裏''NAME_ORG1'},'< - – 2013-02-15 20:53:04

+0

你如何提供JSON數據到你的jqgrid?不知道,但我認爲硬編碼的「url:json_url」是罪魁禍首? – gaurav 2013-02-15 21:05:11

+0

@wirey:我已經刪除了額外的逗號,但問題仍然存在。 – user1596433 2013-02-15 21:24:35

回答

1

你只需要修復的jsonReaderroot財產到root: "itab"。此外,包含rowNum以及一些足夠大的值(如rowNum: 10000)非常重要。如果您不這樣做並且不使用pager,那麼jqGrid將只顯示服務器響應中的前20行(默認值爲rowNum爲20)並放棄所有其他行。

The demo成功讀取JSON數據並顯示

enter image description here

它使用下面的代碼

$(function() { 
    "use strict"; 
    $('#list').jqGrid({ 
     datatype: 'json', 
     url: 'user1596433.json', 
     caption: 'Prospect Finder', 
     gridview: true, 
     height: "auto", 
     colNames: ['Partner','First Name', 'Last Name', 'Organization'], 
     colModel: [ 
      {name: 'PARTNER', width: 80 }, 
      {name: 'NAME_FIRST' }, 
      {name: 'NAME_LAST' }, 
      {name: 'NAME_ORG1', width: 100 } 
     ], 
     jsonReader: { 
      repeatitems: false, 
      id: "PARTNER", 
      root: "itab" 
     }, 
     rowNum: 10000, 
     autoencode: true, 
     loadonce: true 
    }); 
}); 
0

看看文檔。 http://www.trirand.com/jqgridwiki/doku.php?id=wiki:retrieving_data#json_data 您的json安裝不正確。 見

{ 
     "total": "xxx", 
     "page": "yyy", 
     "records": "zzz", 
     "rows" : [ 
     {"id" :"1", "cell" :["cell11", "cell12", "cell13"]}, 
     {"id" :"2", "cell":["cell21", "cell22", "cell23"]}, 
      ... 
     ] 
    } 

這是默認的格式(雖然可以覆蓋它,但你仍然需要提供身份證,總計頁面和記錄)

jsonReader: { 
    repeatitems: false, 
    id: "Id", 
    root: function (obj) { return obj.itab; }, 
    page: function (obj) { return 1; }, 
    total: function (obj) { return 1; }, 
    records: function (obj) { return obj.itab.length; } 
} 
0

我的經驗是:

錶停留在加載,這意味着它試圖從url中檢索,但無法處理它。

然後我意識到我的JSON是默認jsonReader不相容的,解決方法是,

1.設置jsonReader要與你的JSON數據兼容

例如JSON數據:

{"page":1,"YOUR_ROW_NAME":[{"YOUR_ID":"14","YOUR_CELL_NAME":["ImageHeight"]}]} 

將以下內容添加到javascript(其他鍵(即頁面),也可以被覆蓋)

jsonReader : { 
     root: "YOUR_ROW_NAME", 
     cell: "YOUR_CELL_NAME", 
     id: "YOUR_ID", 
}, 

2.carefully使用默認jsonReader,必須使用 「行」, 'ID',方括號中 '細胞'[],而編碼數據

foreach($all as $row){ 
    $response->rows[$i]['id']=$row->id; 
    $response->rows[$i]['cell']=array($row->id,$row->name,$row->url); 
    $i++; 
} 

對於初學者有用維基:http://www.trirand.com/jqgridwiki/doku.php?id=wiki:retrieving_data#json_data