我的jqGrid在JSON调用时变空了。虽然它使用datatype ='jsonstring'但不使用json类型。这是我的JSON
{
"d": {
"total": 6,
"page": 1,
"records": 6,
"rows": [
{
"id": 1,
"Name": "James",
"EMPID": "0000000056",
"EMPDATE": "",
"JOBTYPE": "REQ",
"DEPTID": "FIN",
"STATUS": "P1"
},
{
"id": 2,
"Name": "James",
"EMPID": "R2",
"EMPDATE": "",
"JOBTYPE": "REQ",
"DEPTID": "FIN",
"STATUS": "P1"
},
{
"id": 3,
"Name": "James",
"EMPID": "V2",
"EMPDATE": "",
"JOBTYPE": "VOU",
"DEPTID": "FIN",
"STATUS": ""
},
{
"id": 4,
"Name": "James",
"EMPID": "V1",
"EMPDATE": "",
"JOBTYPE": "VOU",
"DEPTID": "FIN",
"STATUS": ""
},
{
"id": 5,
"Name": "James",
"EMPID": "009017",
"EMPDATE": "",
"JOBTYPE": "PY",
"DEPTID": "",
"STATUS": "V2"
},
{
"id": 6,
"Name": "James",
"EMPID": "009018",
"EMPDATE": "",
"JOBTYPE": "PY",
"DEPTID": "",
"STATUS": "V1"
}
]
}
}
我从javascript调用jqGrid是
function getgrid()
{
$("#list").jqGrid({
url:'http://10.240.26.41/GetGridFields',
datatype: 'json',
mtype: 'GET',
ajaxGridOptions: { contentType: 'application/json; charset=utf-8' },
//serializeGridData: function (postData) {
// return JSON.stringify(postData);
// },
jsonReader: { repeatitems: false, root: "d.rows", page: "d.page", total: "d.total", records: "d.records" },
colModel: [
{ name: 'id', key: true, width: 60, align: "center", hidden: false },
{ name: 'Name', width: 80, sortable: false, hidden: false },
{ name: 'EMPID', width: 180, sortable: false, hidden: false },
{ name: 'EMPDATE', width: 180, sortable: false, hidden: false },
{ name: 'JOBTYPE', width: 180, sortable: false, hidden: false },
{ name: 'DEPTID', width: 180, sortable: false, hidden: false },
{ name: 'STATUS', width: 180, sortable: false, hidden: false }
],
rowNum: 10,
rowList: [10, 20, 300],
pager: "#pager",
viewrecords: true,
gridview: true,
rownumbers: true,
height: 230,
caption: 'Emp Detail'
})
}
请告诉我这里的错误。它与jsonstring一起工作正常。
答案 0 :(得分:0)
我建议您使用jslint验证您的json结果,因为使用jsonstring工作可能是格式类型问题
答案 1 :(得分:0)
如何在the demo上看到你的jqGrid可以读取你的JSON数据。我在演示中只做了最小的优化更改,这对您的主要问题并不重要。
所以我想,你有使用完整URL的问题(你应该使用'/GetGridFields'
而不是'http://10.240.26.41/GetGridFields'
),因为你无法通过Ajax调用另一个IP主机the same origin policy。另一个可能的原因是您有错误的'Content-Type'
或其他HTTP标头。您可以检查关于Fiddler,Firebug或仅使用IE或Chrome的开发人员工具的HTTP标头(请参阅“网络”标签)。
无论如何,我建议你将loadError
处理程序包含到jqGrid中。有关详细信息,请参阅the answer。