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

时间:2012-05-06 21:47:40

标签: javascript json jqgrid

我一直在尝试在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'
    });
});

我可以看到正在从AJAX请求中检索JSON数据,我已经仔细查看了JQGrid的JSON数据指令,但看不出我做错了什么。

有人可以帮忙吗?谢谢。

1 个答案:

答案 0 :(得分:3)

错误非常简单,但很难找到:您使用jsonreader代替jsonReader,因此jsonreader将被忽略,默认jsonReader将会被忽略使用

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

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

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

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

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