jqgrid:can';不显示json数据
我试图在jqgrid中显示json数据,但没有得到任何行 这是我的表格:jqgrid:can';不显示json数据,json,jqgrid,Json,Jqgrid,我试图在jqgrid中显示json数据,但没有得到任何行 这是我的表格: $('#jqList').jqGrid({ url: '/my/url', datatype: 'json', colNames:['field1', 'field2'], colModel:[ {name:'field1',index:'field1', width:200}, {name:'field2',index:'field2', width
$('#jqList').jqGrid({
url: '/my/url',
datatype: 'json',
colNames:['field1', 'field2'],
colModel:[
{name:'field1',index:'field1', width:200},
{name:'field2',index:'field2', width:300}
],
pager: '#jqPager',
rowNum: 20,
rowList: [10, 20, 30, 50],
height: '100%',
viewrecords: true,
jsonReader: {
repeatitems: false,
root: function (obj) { return obj; },
page: function (obj) { return 1; },
total: function (obj) { return 1; },
records: function (obj) { return obj.length; },
id: 'id'
}
});
我可以在浏览器中访问我的url,它显示如下内容:
{"rows": [
{"id": "3", "field1": "blabla", "field2": "blabla"},
{"id": "10", "field1": "blabla", "field2": "blabla"},
{"id": "4", "field1": "blabla", "field2": "blabla"},
{"id": "8", "field1": "blabla", "field2": "blabla"}
]
}
但是,当我显示我的网格时,我没有我所说的任何数据。
如果我检查控制台,我的url上有500个错误(url中添加了一些参数)
我希望我提供了足够的信息
编辑
firebug控制台显示:
"NetworkError: 500 Internal Server Error - http://localhost/path/to/my/url?_search=false&nd=1373439192511&rows=20&page=1&sidx=&sord=asc"
我在apache服务器上使用PHP
php代码:
header('Content-type: application/json');
foreach ($cars as $k => $v) {
$tab['rows'][$k] = $v['Car'];
}
echo json_encode($tab);
谢谢jqGrid生成的URL似乎是:
http://localhost/path/to/my/url?_search=false&nd=1373439192511&rows=20&page=1&sidx=&sord=asc
正在服务器端导致某种错误(我不知道您使用的是哪种服务器端技术,但例如在ASP.NET的情况下,这种响应意味着存在未处理的异常)
您已经声明了干净的URL,它应该如下所示:
http://localhost/path/to/my/url
机器运转正常。在这种情况下,如果您不需要jqGrid正在添加的参数,您可以尝试通过告诉jqGrid不要发送这些参数来解决问题:
$('#jqList').jqGrid({
url: '/my/url',
datatype: 'json',
colNames:['field1', 'field2'],
colModel:[
{name:'field1',index:'field1', width:200},
{name:'field2',index:'field2', width:300}
],
pager: '#jqPager',
rowNum: 20,
rowList: [10, 20, 30, 50],
height: '100%',
viewrecords: true,
prmNames: {
page: null,
rows: null,
sort: null,
order: null,
search: null,
nd: null
},
jsonReader: {
repeatitems: false,
root: function (obj) { return obj; },
page: function (obj) { return 1; },
total: function (obj) { return 1; },
records: function (obj) { return obj.length; },
id: 'id'
}
});
这不是一个完美的解决方案(我们仍然不知道您的服务器为什么会生成内部错误以及如何解决),但它可能会使您的代码正常工作。如果您想解决服务器端问题,我们必须更多地了解服务器上发生的事情。尽管我给出了
url:path/to/my/json/url,但jqGrid似乎在等待这样的url:path/to/my/url
在开发服务器上。。。而且url:path/to/my/url
在beta服务器上运行良好
我真的不明白为什么,如果url是“错误的”,为什么错误不是404
不管怎样,它现在工作得很好
感谢您的时间通常当我收到500个错误时,这意味着Java脚本或mvc控制器的url路径是错误的 第一件事是第一件事
您的数据映射是否与网格位于同一文件中?如果是,则给它一个名称,并在url中引用该名称。如果您是从数据库获取数据,那么您可能会使用控制器获取数据并将其转换为json可序列化对象。因此url应该指向该控制器的位置。对不起,我的问题很糟糕,您可以编辑问题并详细说明您的500错误(消息等)。我已经添加了firebug控制台日志谢谢。我在apache服务器上使用php。我尝试了您的prmNames方法,仍然有500错误,但url现在没有任何参数。@ThEBiShOp然后您需要调试并向我们提供有关服务器端代码的更多信息。问题就在这里,在客户端我们无能为力。检查您的Apache日志以了解starter。在Apache错误日志中,我没有任何相关信息(2小时前丢失的favicon的最后一个条目),在访问日志中我有:
127.0.0.1---[10/Jul/2013:11:21:59+0200]“GET/my/url HTTP/1.1”500 169
@ThEBiShOp这意味着Apache将此500视为应用程序生成的响应,您需要更深入地挖掘,以便在PHP中找到引发错误的地方。这是一个简短的PHP错误日志配置说明:@tpeczek:JSON来自服务器的响应将行作为根。因此,在服务器端解决500错误问题后,需要将jsonReader的root
定义更改为root:“行”
。