0

このOlegからの回答を使用して、serializeGridData を使用して 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()
4

2 に答える 2

0

関数にJSON.stringify遭遇すると、それを null に検閲します。次のように、関数なしでデータを設定してみてください。

postData: {
    param1: $("param1").val(),
    // etc.
}
于 2012-10-02T17:46:52.500 に答える
0

コールバックpostData内のすべてのプロパティを列挙し、その中で使用して、一部のプロパティがメソッドであるかどうかを確認する必要があると思います。メソッドの場合は、メソッドを呼び出して、結果を同じ名前のプロパティに保存する必要があります。回答または回答のコードからの実装を見てください。serializeGridData$.isFunctionserializeRowData

于 2012-10-02T17:55:19.740 に答える