jqgrid - 带有额外postData参数的serializeGridData

时间:2012-10-02 17:20:12

标签: jqgrid

我正在尝试使用serializeGridData使用来自answerOleg将我的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()

2 个答案:

答案 0 :(得分:0)

JSON.stringify遇到函数时,它censors it to null。尝试设置没有函数的数据,如下所示:

postData: {
    param1: $("param1").val(),
    // etc.
}

答案 1 :(得分:0)

我认为您应该枚举postData回调内serializeGridData的所有属性,并在其中使用$.isFunction来验证某些属性是否为方法。在方法的情况下,您应该调用方法并将结果保存在具有相同名称的属性中。请查看the answerthe answer代码中serializeRowData的实施情况。