当我在jqGrid中设置postData时,它在重新加载时没有正确序列化
我有一个jqGrid,它最初是空的(只有当_search为true时,我才从服务器返回数据)。 这是网格代码:当我在jqGrid中设置postData时,它在重新加载时没有正确序列化,jqgrid,http-post,jqgrid-asp.net,Jqgrid,Http Post,Jqgrid Asp.net,我有一个jqGrid,它最初是空的(只有当_search为true时,我才从服务器返回数据)。 这是网格代码: jQuery(gridId).jqGrid({ url : '/controller/GetData', height : 100, multiplesearch : true, datatype : "json",
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…
,我不想在服务器上处理它,这必须是一种正确的方法来实现。我知道这实际上是正确序列化的对象,但我需要这个my函数以与jqGrid的包含搜索相同的方式工作,因为我已经为这种情况编写了服务器端代码。您以错误的方式构造了过滤器。例如,对于JSON.stringify
,过滤器的值必须是JSON编码的,而不是用法。包含相应的代码示例
已更新:关于postData
的定义如下
postData: {
filters: function () {
return JSON.stringify(
{ groupOp: "AND", rules: [
{ field: 'LBONumber', op: 'eq', data: $("#LBO").val() }
]}
);
})
}
好极了!你真是天才!:)这正是我想要得到的答案,我很久以前就使用了JSON.stringify,完全忘记了它,知道我遗漏了一些东西,但记不起是什么:)