Ajax.ActionLink を介してパーシャルをロードする MVC ページがあり、これが機能し、ロードされたパーシャルには Ajax.BeginForm を持つフォームが含まれています。このフォームは目立たない ajax に接続されておらず、代わりにページの更新を実行しています (送信をクリックするとイニシエーターが jquery ではなくブラウザーであることを示すブラウザーのネットワークログでこれを確認しました)。
問題は、ページが読み込まれたときにフォームが存在しなかったため (後で Ajax.ActionLink を介して追加された)、目立たない ajax が新しく追加されたフォームの data-ajax 属性を認識しなかったことです。必要なイベントを接続します。これは document.ready でのみ発生すると想定しており、その時点では ajax フォームは存在しませんでした。
「邪魔にならない Ajax さん、data-ajax でマークされた新しい要素がいくつかあるので、私のページをもう一度見てください」と言うためにできることはありますか?
ありがとう。
目立たない ajax ソースを見ると、次のようになっています。
$("form[data-ajax=true]").live("submit", function (evt) {
var clickInfo = $(this).data(data_click) || [];
evt.preventDefault();
...
生成されたフォーム タグは次のようになります。
<form action="/Path/Create" class="form-horizontal" data-ajax="true" data-ajax-method="post" data-ajax-mode="replace" data-ajax-update="#ParentContainer" id="PathForm" method="post" novalidate="novalidate">
私が知る限り、.live イベントのセレクターは、ページに読み込まれたときに新しいフォームを取得する必要があります。ただし、フォームはブートストラップモーダル内にあるため、イベントが何らかの形で発生するのを妨げているかどうかはわかりません。
これを Chrome コンソールで実行することもできます。
$("form[data-ajax=true]").live("submit", function (evt) {
var clickInfo = $(this).data(data_click) || [];
evt.preventDefault(); });
フォーム要素は正常に返されますが、送信をクリックすると、ページ全体が更新されます。preventDefault に配線したので、少なくとも何もしないと思います。