我正在尝试使用serializeGridData使用来自answer的Oleg将我的postdata转换为JSON。这是我的代码。
jQuery(function() {
$('#grid').jqGrid({
........
........
postData: {
param1: function() { return $("param1").val(); },
param2: function() { return $("param2").val(); },
searchText: function() { return $("searchText").val(); },
totalRecords: function() { return msgGrid.getGridParam("records"); }
},
serializeGridData: function (postData) {
return JSON.stringify(postData);
},
ajaxGridOptions : {
contentType: 'application/json; charset=utf-8'
}
});
});
来自serializeGridData的postData不会将postData {}中定义的自定义参数替换为实际值。我已经在firebug中调试了,这就是数据如何进入serializeGridData方法。因此,最终JSON.stringify不会在请求数据中转换param1,param2 ..值。如何修复它以发送自定义参数的实际值?提前谢谢..
_search false
nd 1349195468864
page 1
rows 25
sidx "sortcol_name"
sord "desc"
param1 function() // expect to have actual param1 value
param2 function()
searchText function()
totalRecords function()
答案 0 :(得分:0)
当JSON.stringify
遇到函数时,它censors it to null。尝试设置没有函数的数据,如下所示:
postData: {
param1: $("param1").val(),
// etc.
}
答案 1 :(得分:0)
我认为您应该枚举postData
回调内serializeGridData
的所有属性,并在其中使用$.isFunction
来验证某些属性是否为方法。在方法的情况下,您应该调用方法并将结果保存在具有相同名称的属性中。请查看the answer或the answer代码中serializeRowData
的实施情况。