我想你尝试打电话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/.