Jquery を使用してフォーム送信をインターセプトし、代わりに Ajax 送信を行うアプリケーションを開発しています。ここまでは順調ですね!クライアントで JS が有効になっていない場合、アプリは問題なく動作し続けます。
さて、今日新しいフォームを作成しましたが、JQuery は送信をインターセプトしません。私が少し変わったのは事実ですが、それでもなおです。それは働いているはずです。
フォーム、スパン、2 つのボタン (いいえ (ボタン) とはい (送信)) を持つ単純な PartialView があります。RenderPartial("MyPartial") を DIV に使用し、プラグイン FancyBox を使用してモーダルとして表示します。どのリンクをクリックしてモーダルを表示するかによって、フォームのアクション (スパムの報告またはアイテムの削除) と特定のメッセージのスパンを変更します。「派手な」確認メッセージのように!!
繰り返しますが、これまでのところとても良いです。フォーム アクションを変更すると機能します (alert(form.attr(action)) を使用して、適切なメッセージでスパンを変更すると機能しますが、ボタンをクリックしてフォームを送信すると (YES)、まっすぐ進みますそして、私はAjaxリクエストではなく、通常のリクエストを行いました。
これは次の形式です。
<form id="dialogForm" action="" method="post">
<div class="form_item_button">
<span id="dialogQuestion" style="color: Black;"></span>
<button id="btDialogNo" type="button" value="button" class="btn">No</button>
<button id="btDialogYes" type="submit" value="Submit" class="btn">Yes</button>
</div>
</form>
そして、これはフォーム送信をインターセプトするスクリプトです:
$(document).ready(function() {
var theForm = $("#dialogForm");
// I CHECK IF THE ACTION WAS SET PROPERLY
// MY TESTS SHOW ME THAT THE ACTION IS OK!
alert(alert(theForm).attr("action"));
theForm.submit(function(e) {
e.preventDefault();
$.ajax({
type: "POST",
data: theForm.serialize(),
url: theForm.attr("action"),
dataType: "json",
success: function(json) {
alert(json.Status);
},
error: function() {
alert('An error occurred while processing your request. Please try again.');
}
});
});
アイデアはありますか?私はそれを修正しようとして一日を失いました!! :(
ありがとう