2016-12-30 1 views
0

私はOlegの無料jqGridを使用しています。無料jqGrid:POSTデータをbeforeSubmit関数でラップする

オペレータと、それが操作するデータがうまく分離されている
Array(
oper => edit, 
data => Array(
    foo => '123', 
    bar => 'xyz', 
    ... 
    ) 
) 

:PHPで私のような素敵な配列を取得するように私のフォーム編集した後、私は、私のPOSTデータをラップしようとしています。

私の直感的なアプローチのようなものだっただろう:これは動作しませんUnfortuntely

  beforeSubmit: function(postdata, formid) { 
        var d = {}; 
        d.data = postdata; 
        console.log(d); 
        postdata = d; 
        return([true, '']); 
      } 

。 console.log(d)は結果をうまく表示しますが、postdataは変更されません。私はjavascriptに精通していませんが、グローバルpostdataは関数内から変更されていないと思われますが、残念ながら関数は返すことができません。

これを解決する方法に関するご提案です。それは軽微な問題ですが、私は、オペレータとそのデータを明確に分離するために、より構造的に見え、より保守的であると考えていました。

ありがとうございます。

答えて

1

コールバックbeforeSubmitはあなたのケースでは最良の選択ではありません。その代わりに、serializeEditDataコールバックを使用することをお勧めします。このコールバックは、フォーム編集のオプション(formEditingのjqGridのパラメータ内)またはjqGridのパラメータとして定義できます。コールバックは唯一のパラメータとしてpostdataを取得し、JSON文字列の変更されたオブジェクトを返す必要があります。これはサーバーに送信する必要があります。コードは次のようになります

serializeEditData: function (postdata) { 
    var d = { 
      oper: postdata.oper, 
      data: $.extend(true, {}, postdata) // make copy 
     }; 
    delete d.data.oper; // remove unneeded oper property 
    return d; 
} 
+0

youdaman !!ありがとう、もう一度! – Roadowl

+0

@Roadowl:ようこそ! – Oleg

関連する問題