一般に、投稿したコードは機能し、次のグリッドのリロード時に新しいコード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 からいくつかの変数を使用したり、ページに存在するコントロールからいくつかの値を取得したりできます (詳細については、こちらを参照してください)。を使用せずに動的 に実装できる場合。specialParam
getGridParam
最後の発言。すでに の色myGridOnBeforeRequest
(質問の の色と比較してMyGridOnBeforeRequest
ください) から、別の方法で解釈されることがわかります。関数の名前が大文字で始まる場合は、新しいクラスのコンストラクターMyGridOnBeforeRequest
を定義する一般的に使用される名前変換に対応することを意味します。次のように使用する必要がありvar test = new MyGridOnBeforeRequest();
ますnew
。と比較するだけvar now = new Date();
です。標準の JavaScript 名変換を保持することを強くお勧めします。