一般に、投稿したコードは機能し、次のグリッドのリロード時に新しいコードserializeGridDataが使用されます。
serializeGridData投稿された方法で使用するのは少し奇妙です。postData代わりにパラメーターを使用するだけで十分です。
var postData = $('#grid').jqGrid('getGridParam', "postData");
$.extend(postData: {specialParam: "foo"});
さらに、元のコードでは、元の$.extend(postData, {specialParam: "foo"});を変更するpostDataものを使用します。悪くはありませんが、一般的にコード
function myGridOnBeforeRequest (postData) {
return $.extend({}, postData, {specialParam: "foo"});
}
あるいは
function myGridOnBeforeRequest (postData) {
return $.extend(true, {}, postData, {specialParam: "foo"});
}
よりきれいになります。の使用は実際に$.paramは必要ありません。オブジェクトを返すと、jQuery.ajax が$.param自動的に を呼び出します。
postDataもう 1 つの非常に一般的な方法は、次のようなパラメーターを使用してグリッドを直接定義することです。
postData: {
specialParam: function () { return "foo"; }
}
関数にさらに多くのロジックを実装できるように、関数の本体内の外側の scote からいくつかの変数を使用したり、ページに存在するコントロールからいくつかの値を取得したりできます (詳細については、こちらを参照してください)。を使用せずに動的 に実装できる場合。specialParamgetGridParam
最後の発言。すでに の色myGridOnBeforeRequest(質問の の色と比較してMyGridOnBeforeRequestください) から、別の方法で解釈されることがわかります。関数の名前が大文字で始まる場合は、新しいクラスのコンストラクターMyGridOnBeforeRequestを定義する一般的に使用される名前変換に対応することを意味します。次のように使用する必要がありvar test = new MyGridOnBeforeRequest();ますnew。と比較するだけvar now = new Date();です。標準の JavaScript 名変換を保持することを強くお勧めします。