jqGrid在JSON调用中为空

jqGrid在JSON调用中为空,jqgrid,Jqgrid,我的jqGrid在JSON调用中变为空。虽然它使用的是datatype='jsonstring',但不是json类型。这是我的JSON { “d”:{ “总数”:6, “页码”:1, “记录”:6, “行”:[ { “id”:1, “姓名”:“詹姆斯”, “EMPID”:“00000000 56”, “生效日期”:“生效日期”, “作业类型”:“请求”, “DEPTID”:“FIN”, “状态”:“P1” }, { “id”:2, “姓名”:“詹姆斯”, “EMPID”:“R2”, “生效日期”

我的jqGrid在JSON调用中变为空。虽然它使用的是datatype='jsonstring',但不是json类型。这是我的JSON

{
“d”:{
“总数”:6,
“页码”:1,
“记录”:6,
“行”:[
{
“id”:1,
“姓名”:“詹姆斯”,
“EMPID”:“00000000 56”,
“生效日期”:“生效日期”,
“作业类型”:“请求”,
“DEPTID”:“FIN”,
“状态”:“P1”
},
{
“id”:2,
“姓名”:“詹姆斯”,
“EMPID”:“R2”,
“生效日期”:“生效日期”,
“作业类型”:“请求”,
“DEPTID”:“FIN”,
“状态”:“P1”
},
{
“id”:3,
“姓名”:“詹姆斯”,
“EMPID”:“V2”,
“生效日期”:“生效日期”,
“作业类型”:“VOU”,
“DEPTID”:“FIN”,
“状态”:”
},
{
“id”:4,
“姓名”:“詹姆斯”,
“EMPID”:“V1”,
“生效日期”:“生效日期”,
“作业类型”:“VOU”,
“DEPTID”:“FIN”,
“状态”:”
},
{
“id”:5,
“姓名”:“詹姆斯”,
“EMPID”:“009017”,
“生效日期”:“生效日期”,
“作业类型”:“PY”,
“DEPTID”:“,
“状态”:“V2”
},
{
“id”:6,
“姓名”:“詹姆斯”,
“EMPID”:“009018”,
“生效日期”:“生效日期”,
“作业类型”:“PY”,
“DEPTID”:“,
“状态”:“V1”
}
]
}
}
我从javascript发出的jqGrid调用是

函数getgrid() { $(“#列表”).jqGrid({ 网址:'http://10.240.26.41/GetGridFields', 数据类型:“json”, mtype:'获取', ajaxGridOptions:{contentType:'application/json;charset=utf-8'}, //serializeGridData:函数(postData){ //返回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',宽度:80,可排序:false,隐藏:false}, {name:'EMPID',宽度:180,可排序:false,隐藏:false}, {name:'EMPDATE',宽度:180,可排序:false,隐藏:false}, {name:'JOBTYPE',宽度:180,可排序:false,隐藏:false}, {name:'DEPTID',width:180,sortable:false,hidden:false}, {name:'STATUS',width:180,sortable:false,hidden:false} ], rowNum:10, 行列表:[10,20,300], 寻呼机:“#寻呼机”, viewrecords:是的, gridview:没错, 行数:对, 身高:230, 描述:“Emp详细信息” }) }
请让我知道我错在哪里。使用jsonstring可以很好地工作。

我建议您使用验证json结果,因为使用jsonstring工作可能是一个格式类型问题。

如何在jqGrid上查看和读取json数据。我在演示中只做了最小的优化更改,这对您的主要问题并不重要

因此,我假设您在使用完整URL时有问题(您应该使用
'/GetGridFields'
而不是
'http://10.240.26.41/GetGridFields“
),因为无法获得对另一个IP主机的Ajax调用。另一个可能的原因是您有错误的
'Content-Type'
或其他一些HTTP头。您可以使用IE或Chrome的开发工具(请参阅“网络”选项卡)检查HTTP头,也可以仅使用IE或Chrome的开发工具检查HTTP头


无论如何,我建议您将
loadError
handler包含到jqGrid中。有关详细信息,请参阅。

我做到了,一切都很好。还有一件事,在我的页面中,我通过getJSON进行了另一个Ajax调用。这可能是这里的问题。另一个JSON调用工作正常。jqgrid使用.ajax(),getJSON()只是一个.ajax90包装器,但是您可以尝试使用有用的建议。根据您的建议,我添加了LoadError处理程序,并且在Firefox中出现了以下错误..HTTP状态代码:200 textStatus:parsererror错误抛出:SyntaxError:JSON.parse:意外character@JDev:不客气!我解释的结果是,您确实成功地从服务器接收到了数据,数据将被正确地解释为JSON数据,但数据有语法错误。我们现在应该更接近解决方案。您应该检查包含服务器响应的
jqXHR.responseText
。我认为这些数据与您发布的JSON数据不同。您应该完全准确地分析
jqXHR.responseText
,或者您可以使用Fiddler、Firebug或我之前编写的开发工具获得相同的数据;CHARSET=UTF-8,在Response选项卡下,我得到了HTML标记,并且在HTML(第三个选项卡)下得到了上面的JSON字符串。它不应该是JSON而不是HTML吗?。上面是我从HTML选项卡复制的JSON数据。它与上面相同,但在HTML选项卡下。@JDev:这是我最初的想法。正确的
内容类型必须是“application/json”(或“application/json;charset=utf-8”)。这是服务器代码中的错误。您在服务器上使用哪种技术?无论如何,您都应该隐式或显式地将
内容类型
标题设置为正确的值。我相信在你解决问题后,网格将正确填充。你太好了。非常感谢你在这方面的帮助。正如您在开始时正确怀疑的那样,这是内容类型问题。我是Jqgrid和Jquery世界的新手,以后可能也需要您的帮助和指导。