【问题标题】:JQGrid 4.3.2 error in getAccessor function when reading JSON data读取 JSON 数据时,getAccessor 函数出现 JQGrid 4.3.2 错误
【发布时间】:2012-05-06 21:47:39
【问题描述】:

我一直在尝试在 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 数据指令,但看不出我做错了什么。

有人可以帮忙吗?谢谢。

【问题讨论】:

    标签: javascript json jqgrid


    【解决方案1】:

    错误很简单,但很难找到:你使用jsonreader而不是jsonReader,所以jsonreader会被忽略,而使用默认的jsonReader

    如何在the demo看到修改后数据读取成功。

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

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

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

    我在演示中添加了height: 'auto' 选项,只是为了提高知名度。

    【讨论】:

    • 奥列格,非常感谢。你不知道那是怎么让我发疯的。感谢您发现我遗漏的错误。
    猜你喜欢
    • 1970-01-01
    • 2021-12-30
    • 1970-01-01
    • 2017-04-28
    • 1970-01-01
    • 2018-04-01
    • 2021-10-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多