2013-02-15 92 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