在jqgrid中获取[obj未定义]

时间:2012-04-13 15:04:28

标签: jquery jqgrid jqgrid-php

我在使用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

1 个答案:

答案 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'的使用是输入错误吗?

相关问题