jqgrid addJSONData 不起作用

2023-12-24

我正在 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 阅读器。

BTW,你知道如何使用set方法设置“总数”、“页数”、“记录数”吗?


我想你尝试打电话addJSONData method before网格将根据以下方面创建jQuery("#projectList").jqGrid({...});

的用法addJSONData实际上总是不需要的(请参阅我关于该主题的第一篇文章中的一个here https://stackoverflow.com/q/2660226/315935)。同样,你永远不应该使用eval方法是邪恶的。一用jQuery.parseJSON http://api.jquery.com/jQuery.parseJSON/ or JSON解析 http://www.json.org/js.html反而。

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

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

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}]);
});

In the demo http://www.ok-soft-gmbh.com/jqGrid/user595234.htm我只从用法示例中得到表格jQuery.序列化 http://api.jquery.com/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 http://api.jquery.com/serializeArray/或者。它允许以其他格式(如 JSON)序列化数据或以其他格式转换数据(请参阅here https://stackoverflow.com/a/8568113/315935)可以使用以下命令轻松地将其与标准 jqGrid 参数合并$.extend http://api.jquery.com/jQuery.extend/.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

jqgrid addJSONData 不起作用 的相关文章

随机推荐