读取 JSON 数据时 getAccessor 函数中的 JQGrid 4.3.2 错误

JQGrid 4.3.2 error in getAccessor function when reading JSON data

本文关键字:JQGrid 错误 数据 JSON getAccessor 函数 读取      更新时间:2023-09-26

我一直在尝试在JQGrid中呈现JSON数据。我收到以下错误:

Error: b is undefined
Source File: http://localhost:1302/Scripts/jquery.jqGrid.min.js
Line: 23

当我使用未最小化的 JQGrid 源代码时,我看到它对 getAccessor 方法进行了多次调用,并且在最后一次调用时,该方法的第一个参数 (obj) 被传递给一个未定义的值:

Error: obj is undefined
Source File: http://localhost:1302/Scripts/jquery.jqGrid.src.js
Line: 151

这似乎是导致网格停止渲染的原因,但为什么呢?

呈现的网格显示列标题,但没有内容。"加载..."网格中的消息永远不会消失。

我的 JSON 数据如下所示:

{
   "total":"1",
   "page":"1",
   "userdata":{
   },
   "records":"2",
   "rows":[
      {
         "DateOfBirth":"11/04/2012 12:00:00 AM",
         "DisambiguationNote":"Boring guy",
         "FirstName":"Joe",
         "LastName":"Bloggs",
         "MiddleName":"Binkie",
         "PersonId":"1"
      },
      {
         "DateOfBirth":"01/01/2001 12:00:00 AM",
         "DisambiguationNote":"someone else",
         "FirstName":"Edna",
         "LastName":"Edwards",
         "MiddleName":"Edith",
         "PersonId":"8"
      }
   ]
}

我的网格代码如下所示:

$(function () {
    $("#persongrid").jqGrid({
        url: '/Person/List',
        datatype: 'json',
        mtype: 'GET',
        jsonreader: {
            root: "rows",
            page: "page",
            total: "total",
            records: "records",
            repeatitems: false,
            id: "5"  ,
            cell: ""  ,
            userdata: "userdata"
        },
        colModel: [
            { name: 'DateOfBirth', index: 'DateOfBirth',sorttype:'date' },
            { name: 'DisambiguationNote', index: 'DisambiguationNote' },
            { name: 'FirstName', index: 'FirstName' },
            { name: 'LastName', index: 'LastName' },
            { name: 'MiddleName', index: 'MiddleName' },
            { name: 'PersonId', index: 'PersonId',sorttype:'int' }
        ],
        pager: '#persongridpager',
        rowNum: 10,
        rowList: [10, 20, 30],
        viewrecords: true,
        gridview: true,
        caption: 'People'
    });
});

我可以看到 JSON 数据正在从 AJAX 请求中按上述方式检索,并且我已经非常仔细地阅读了 JQGrid 的 JSON 数据说明,但看不到我做错了什么。

谁能帮忙?谢谢。

错误很容易,但很难找到:您使用jsonreader而不是jsonReader,因此将忽略jsonreader并使用默认jsonReader

如何在演示中看到修改后将成功读取数据。

顺便说一下,您只能指定与默认值不同的jsonReader属性并使用

jsonReader: {
    repeatitems: false,
    id: "5",
}

jsonReader: {
    repeatitems: false,
    id: "PersonId",
}

我添加到演示height: 'auto'选项只是为了提高可见性。