0

我对 Jquery 很陌生,因此在这方面需要您的帮助。

我正在尝试将 jqGrid 与 JSON url 一起使用,但无法使用它。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" }  ]}

有人可以帮助我吗?

谢谢,DJ

4

3 回答 3

1

您只需修复to的root属性。此外,包含一些足够大的值(如)也很重要。如果您不这样做并且不使用,那么 jqGrid 将仅显示来自服务器响应的前 20 行(默认值为20)并丢弃所有其他行。jsonReaderroot: "itab"rowNumrowNum: 10000pagerrowNum

演示成功读取JSON数据并显示

在此处输入图像描述

它使用以下代码

$(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
    });
});
于 2013-02-16T10:47:04.903 回答
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"]},
          ...
      ]
    }

这是默认格式(虽然您可以覆盖它但您仍然需要提供 id、total、page 和 records)

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; }
}
于 2013-02-16T00:08:38.007 回答
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.谨慎使用默认jsonReader,编码数据时必须在方括号[]内使用"rows",'id','cell'

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

对初学者有用的 wiki:http ://www.trirand.com/jqgridwiki/doku.php?id=wiki:retrieving_data#json_data

于 2014-02-03T07:43:40.837 回答