我一直在尝试在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数据指令,但看不出我做错了什么。
有人可以帮忙吗?谢谢。
答案 0 :(得分:3)
错误非常简单,但很难找到:您使用jsonreader
代替jsonReader
,因此jsonreader
将被忽略,默认jsonReader
将会被忽略使用
如何在the demo上看到修改后数据将被成功读取。
顺便说一下,您只能指定jsonReader
与默认值不同的属性并使用
jsonReader: {
repeatitems: false,
id: "5",
}
或
jsonReader: {
repeatitems: false,
id: "PersonId",
}
我添加到演示height: 'auto'
选项只是为了提高可见性。