を発生しません提出、私は次のような形式がありますASP.NET MVC - AJAXフォームは私のpersonDetails.cshmtlファイルで適切なイベント
<form id="userUpdateForm" method="post">
<fieldset>
<legend>User Details</legend>
<input type="checkbox" name="authorisedCheckbox" value="Authorised" id="authCheck" />Authorised<br />
<input type="checkbox" name="enabledCheckbox" value="Enabled" id="eCheck" />Enabled<br />
</fieldset>
<fieldset>
<input type="hidden" name="personId" id="idCheck" value='@ViewData["personId"]'>
</fieldset>
<input type="submit" value="Save Changes" name="Save Changes">
<button type="button">Cancel</button>
</form>
を次のように私はその後さらにページの下Javascriptを持っている:
$('#userUpdateForm').submit(function (e) {
var personDetails = {
Enabled: $('#eCheck').val(),
Authorised: $('#authCheck').val(),
Id: $('#idCheck').val()
};
$.ajax({
type: "POST",
url: '<%= Url.Action("submitForm", "Home") %>',
data: JSON(personDetails),
//contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (result) {
'@Url.Action("Index", "Home")';
},
error: function (result) {
alert("A problem occured when submitting the form.");
}
});
return false;
});
Javascriptは、[送信]ボタンが押されたときに起動されます。最初に、 'HomeController'の 'submitForm'メソッドが起動され、 'HomeController'の 'Index'にリダイレクトされてから、ビューが出力されます。
「submitForm」は現在、次のようになります。
[HttpPost]
public ActionResult submitForm(JsonResult jsonForm)
{
System.Diagnostics.Debug.WriteLine("made it here");
System.Diagnostics.Debug.WriteLine(jsonForm);
return View();
}
だから私の質問です:私はAJAXイベントの火を作るために現在の形で行方不明です何?私はそれがヒットするはずの方法からコンソール上に何も出力せず、アラートが存在しないので、現在発射していないと確信しています。
現在のところ、私は現在、チェックボックスをチェックオンロードに適切な場所に設定する別のJavascriptを持っているので、フォーム自体をあまり変更しないことにします。
編集:Stephen Mueckeのアドバイスで修正しました。私がここでやろうとしていることは、ヒットボタン - > submitFormメソッドの詳細をsubmitする - > submitFormメソッドは詳細を取り、データベース内のいくつかの処理を行います - >成功したときには成功します - >成功した場合、personDetails.cshtmlからindex.cshtml。
'成功....それを愛する:機能(結果){ 'Url.Action( "インデックス"、 "ホーム")@'; } 'は何もしていません。これはタイプミスですか?あなたのネットワークタブをチェックして、ajaxコールが発砲しているかどうか、レスポンス本文に何が入っているかを確認しましたか?それが最も簡単な方法です。また、なぜあなたのajaxメソッドは "JsonResult"オブジェクトを受け入れていますか?これは_return_タイプでなければなりません。フォームフィールドに対応するviewmodelオブジェクトに対応する必要があります。 – ADyson
そして、すべてのタグを含むHTMLページ全体を返すajaxメソッドからビュー全体を返すべきではありません。ページに挿入することはできません。いくつかのJsonデータ(JsonResultを使用)または部分ビューを返す必要があります。 – ADyson
最後に、submitメソッドの最後から 'return false;'を実行するのではなく、e.preventDefault();をメソッドの最初の行に置く方が安全です。これにより、Javascriptが完了するまでに通常のポストバックが行われることはありません。 – ADyson