7

Forms プラグインから jQuery の ajaxSubmit 関数を使用して送信するフォームがあります。送信が行われる直前に、フォームの名前と値のペアをフォーム データに追加しようとしています。私の計画は、beforeSubmit イベント ハンドラーでフォーム データを変更することです。

次のような関数があるとします。

function handleActionFormBeforeSubmit(formData, form, options) {
    // Add a name/value pair here somehow to formData
}

formData に単純なペアを追加するにはどうすればよいですか? 次の形式の配列です。

[ { name: 'username', value: 'jresig' }, { name: 'password', value: 'secret' } ]

ありがとう、ブライアン

4

4 に答える 4

16

1時間の実験の後、解決策を見つけました。フォーム データに値を追加するには、次のコードが機能します。

function handleActionFormBeforeSubmit(formData, form, options) {

    // Add a name/value pair indicating this is an asynchronous call.
    // This works with the ASP.NET MVC framework's Request.IsMvcAjaxRequest() method.
    formData[formData.length] = { "name": "__MVCASYNCPOST", "value": "true" };
}

次のように、変更する値のインデックスがわかっている場合は、データを変更することもできます。

formData[0].value = 'new value';

これが他の誰かに役立つことを願っています。

于 2008-10-29T17:55:02.820 に答える
7

これは問題ありません:

formData.push({ "name": "__MVCASYNCPOST", "value": "true" });
于 2009-11-02T03:43:55.247 に答える
1

formData[0].value = '新しい値'; AjaxSubmit() で正常に動作しています。ファイルコンテンツを動的にアップロードする際に同じことを実装しました。何度もフォームが空のデータをサーバーに送信するため、フォームを送信する前にこのコードを変更すると便利です。

于 2014-02-24T11:14:50.343 に答える
0

この問題が発生したとき、何らかの理由で beforeSubmit コールバックのデータを変更してもうまくいきませんでした。

ただし、フォーム オプションで「データ」にオブジェクトを割り当てると、このオブジェクトがシリアル化されたデータに追加されました。これは、jquery フォーム Web サイトで明示的に文書化されていませんが、基になる $.ajax メソッドの一部です。

于 2010-02-08T12:45:25.740 に答える