当我在jqGrid中设置postData,它在重载时没有正确序列化
问题描述:
我有最初是空的jqGrid(我只在_search为真时才从服务器返回数据)。 这是电网代码:当我在jqGrid中设置postData,它在重载时没有正确序列化
jQuery(gridId).jqGrid({
url : '/controller/GetData',
height : 100,
multiplesearch : true,
datatype : "json",
mtype : "POST",
rowNum : 10,
rowList : [ 10, 20, 30 ],
sortname : 'LBONumber',
sortorder : "desc",
viewrecords : true,
onSelectRow: jqGridRowSelected,
caption : 'DATA',
colNames : ["LBO","First name","Adress"],
colModel : [{"name":"LBONumber","index":"LBONumber","hidden":false},{"name":"FirstName","index":"FirstName","hidden":false},{"name":"Adress","index":"Adress","hidden":false},
});
我有ID为“LBO”和一个按钮的点击文本字段我执行此代码:
$(gridId).setGridParam({
search: true,
postData: {
'filters':$.param({
'groupOp': 'AND',
'rules': [{ "field": 'LBONumber', "op": 'eq', "data": function() { return $("#LBO").val() } }]
})
}
});
我的问题是要求身体,这就是:
_search=true&nd=1306834594225&rows=10&page=1&sidx=LBONumber&sord=desc&filters%5BgroupOp%5D=AND&filters%5Brules%5D%5B0%5D%5Bfield%5D=LBONumber&filters%5Brules%5D%5B0%5D%5Bop%5D=eq&filters%5Brules%5D%5B0%5D%5Bdata%5D=333
应该说...filters=...
,不...filters%5B...
,我不想处理它在服务器上,它必须使这项工作的正确方法。我知道这实际上是正确序列化的对象,但我需要这个函数以与jqGrid包含的搜索相同的方式工作,因为我已经为这种情况完成了服务器端代码。
答
您以错误的方式构建了filters
。例如,代替使用,关于JSON.stringify
,filters
的值必须是JSON编码(参见the documentation)。 The answer包含相应的代码示例。
修订:中postData
定义可以是有关以下
postData: {
filters: function() {
return JSON.stringify(
{ groupOp: "AND", rules: [
{ field: 'LBONumber', op: 'eq', data: $("#LBO").val() }
]}
);
})
}
喝彩!你是天才! :)这只是**完全**我想得到的答案,我很久以前使用JSON.stringify,完全忘了它,并知道我错过了一些东西,但不记得是什么:) – 2011-05-31 20:00:42
@obrad:谢谢!不用谢! – Oleg 2011-05-31 20:51:01