【问题标题】:Getting [obj is undefined] in jqgrid在 jqgrid 中获取 [obj is undefined]
【发布时间】:2012-04-25 23:11:23
【问题描述】:

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

【问题讨论】:

    标签: jquery jqgrid jqgrid-php


    【解决方案1】:

    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)。要读取您当前发布的数据,您应该在 jqGrid 定义中添加 jsonReader: {repeatitems: false, id: "product_name"} 选项。

    如果您使用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'的用法是不是打字错误?

    【讨论】:

    • 谢谢 Oleg,我不知道应该使用 jsonReader。我之前已经使用过 jqgrid,但没有遇到这个问题,我的代码来自我的旧项目。我所做的是添加jsonReader: {repeatitems: false, id: "product_name"},如上所述。谢谢你:D
    猜你喜欢
    • 2021-06-21
    • 2021-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-14
    • 2020-12-02
    • 2015-01-29
    • 1970-01-01
    相关资源
    最近更新 更多