jqgrid addJSONData不起作用
我正在研究jqGrid,返回json是
{"total":1,"page":1,"records":2,"rows":[{"projectId":"1022","name":"john"}]}
然后在我打电话的function
var jsongrid = eval("("+data+")"); var thegrid = jQuery("#projectList")[0]; thegrid.addJSONData(jsongrid);
但它给我错误:对象为null或未定义。 不知道为什么。 我没有使用json阅读器。
顺便说一句,你知道如何使用set方法设置“总计”,“页面”,“记录”吗?
我假设您在使用jQuery("#projectList").jqGrid({...});
创建网格之前尝试调用addJSONData
方法jQuery("#projectList").jqGrid({...});
实际上总是不需要使用addJSONData
(请参阅我在这里关于主题的第一篇文章中的一篇)。 以同样的方式,你永远不应该使用邪恶的eval
方法。 一个使用jQuery.parseJSON或JSON.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}]); });
在演示中,我只是从使用jQuery.serialize的示例中获取表单并稍微修改它。 它显示您需要的数据
此外,就像您可以轻松validationFiddler或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)序列化数据或以另一种格式(参见此处 )转换数据,这可以使用$ .extend轻松与标准jqGrid参数合并。