我在使用jQgrid时遇到问题,当我用json数据类型初始化jqgrid时会导致错误:
obj未定义
ret = obj [expr];
当我使用本地数据类型初始化jqgrid时,不会发生错误,但不会加载json数据
的index.html
<table id="products"></table>
<div id="pager"></div>
<script type="text/javascript">
$('document').ready(function(){
jQuery("#products").jqGrid({
url: 'product.php',
editurl: 'product_update.php',
datatype: "json",
mtype: 'POST',
colNames:['Product Name'],
colModel:[
{name:'product_name',index:'product_name', width:90}
],
rowNum:-1,
viewrecords: true,
rowList:[10,20,30],
pager: '#pager',
toolbar : [true,"top"],
sortorder: "DESC",
caption:"Products",
width: 940,
height: "100%"
});
});
</script>
product.php(仅限模拟数据)
$arrayName = array();
$arrayName['page'] = 1;
$arrayName['total'] = 1;
$arrayName['records'] = 3;
$arrayName['rows'][0] = array(
'product_name' => 'Product X'
);
$arrayName['rows'][1] = array(
'product_name' => 'Product Y'
);
$arrayName['rows'][2] = array(
'product_name' => 'Product Z'
);
echo json_encode($arrayName);
json输出:
{“page”:1,“total”:1,“records”:3,“rows”:[{“product_name”:“Product X”},{“product_name”:“Product Y”},{ “product_name”:“产品Z”}]}
我希望有人可以帮助我。
提前谢谢你:D
答案 0 :(得分:2)
JSON数据的默认输入格式 - 具有类似
的ID的项目数组{"page":1,"total":1,"records":3,"rows":[
{"id":"Product X", "cell":["Product X"]},
{"id":"Product Y", "cell":["Product Y"]},
{"id":"Product Z", "cell":["Product Z"]}
]}
(见here)。要读取您当前发布的数据,您应该将jsonReader: {repeatitems: false, id: "product_name"}
选项添加到jqGrid定义。
如果您使用jsonReader: {cell: "", id: "0"}
,您将拥有最紧凑的输入。在这种情况下,您应该将JSON数据的格式更改为
{"page":1,"total":1,"records":3,"rows":[
["Product X","Product Y","Product Z"]}
]}
此外,我不建议您使用rowNum:-1
。使用一些足够大的正值是更好的。例如rowNum: 10000
。如果您要将loadonce: true
添加到具有rowNum:-1
的网格,那么jqGrid将以错误的方式呈现网格。
您应该添加gridview: true以提高效果。最后一句话:index:'invdate'
的使用是输入错误吗?