5

jquery モバイルで MVC4 を使用するときに、Ajax.BeginForm を使用して作成されたフォームがコントローラーに 2 回送信される理由を説明するバグやその他の洞察を知っている人はいますか。

私は当初、js バンドルを使用しているため、同じ js ファイルが 2 回含まれている可能性があり、フォーム送信時にトリガーされている可能性があると考えていましたが、そうではありません。js ファイルのリストは次のとおりです。

jquery-1.6.4.js
jquery-ui.1.8.11.js
jquery.mobile-1.1.0.js
jquery.unobtrusive-ajax.js
jquery.validate.js
knockout-2.0.0.js
MicrosoftAjax.js
MicrosoftMvcAjax.js
MicrosoftMvcValidation.js
Modernizr.js

プロジェクト内では、Ajax はすべてに対して完全に有効になっています。つまり、mobileinit で何も無効にしていません。

フォームコードは文字通りすべてのフォームで発生するため、フォームコードを投稿していません-1つのフィールドと送信ボタンを持つフォームは2回送信を引き起こします-ただし、Ajax.BeginFormが使用されている場合のみです。

Html.BeginForm では、これらの問題は発生しません。

私はこれで数日間立ち往生しているので、どんな助けも大歓迎です

4

1 に答える 1

8

jQuery Mobile はデフォルトでフォームの送信をハイジャックし、独自の AJAX リクエストを実行します。この動作を停止するには、任意のタグにdata-ajax="false"属性を配置できます。<form>また、フォームが正常に送信されないように、次のような通常の動作を停止してください。

$('#my-form').on('submit', false);

ドキュメント: http://jquerymobile.com/demos/1.1.0/docs/forms/forms-sample.html

追加の JS を含めるのではなく、組み込みの jQuery Mobile AJAX を使用することもできます。actionフォームの属性を、フォームが投稿するサーバー側のファイルにするだけで済みます。

于 2012-06-10T17:54:28.290 に答える