【问题标题】:jqgrid addJSONData doesn't workjqgrid addJSONData 不起作用
【发布时间】:2012-05-02 03:06:35
【问题描述】:

我在做jqGrid,返回json是

{"total":1,"page":1,"records":2,"rows":[{"projectId":"1022","name":"john"}]}

然后在我调用的函数中

 var jsongrid = eval("("+data+")");                  
 var thegrid = jQuery("#projectList")[0];                       
 thegrid.addJSONData(jsongrid);

但它给了我错误:对象为空或未定义。不知道为什么。我没有使用json阅读器。

顺便说一句,你知道如何使用set方法来设置“total”、“page”、“records”吗?

【问题讨论】:

    标签: jquery jqgrid


    【解决方案1】:

    我想您尝试调用addJSONData 方法之前将根据jQuery("#projectList").jqGrid({...}); 创建网格

    addJSONData 的使用实际上总是不需要的(参见我关于主题 here 的第一篇文章中的一个)。同样,您永远不应该使用邪恶的eval 方法。一种是使用jQuery.parseJSONJSON.parse

    我想你应该使用datatype: 'json' 来解决你的问题。您应该发布更多代码来向您展示如何在您的案例中使用其他 jqGrid 选项。

    更新:从您之前的问题来看,您似乎只想在单击“搜索”按钮时从表单向服务器发送其他数据。在这种情况下,我建议将代码修改为以下内容

    var $grid = $("#projectList");
    
    $grid.jqGrid({
        url: 'user595234.json',
        datatype: "json",
        serializeGridData: function (data) {
            return $.param(data) + '&' + $("#project_search_form").serialize();
        },
        jsonReader: {id: "projectId", repeatitems: false},
        colNames: ['ID', 'Name'],
        colModel: [
            {name: 'projectId', width: 255},
            {name: 'name', width: 255}
        ],
        rowNum: 10,
        rowList: [10,20,30],
        pager: '#projectPager',
        sortname: 'projectId',
        viewrecords: true,
        sortorder: "desc",
        caption: "Simple data manipulation",
        height: "auto"
    }).jqGrid("navGrid", "#projectPager", {edit: false, add: false, del: false});
    
    $("#search").click(function () {
        $grid.trigger("reloadGrid", [{page: 1}]);
    });
    

    the demo 中,我只得到了jQuery.serialize 用法示例中的表格,并对其进行了一些修改。它显示您需要的数据

    此外,就像您可以轻松验证 Fiddler 或 Firebug 一样,URL 将附加如下附加参数

    ...?_search=false&nd=1336057299806&rows=10&page=1&sidx=projectId&sord=desc&a=1&b=2&c=3&d=4&e=7&f=8 
    

    标准参数

    _search=false&nd=1336057299806&rows=10&page=1&sidx=projectId&sord=desc
    

    将附加表单中的参数

    a=1&b=2&c=3&d=4&e=7&f=8
    

    在某些情况下,可以交替使用jQuery.serializeArray。它允许以另一种格式(如 JSON)序列化数据或将数据转换为另一种格式(请参阅here),这些格式可以使用$.extend 轻松与标准 jqGrid 参数合并。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多