私はコントローラアクションにフォームをポストしています。コントローラからエラーが発生しています。このAjaxフォーム投稿の問題を取り除くにはどうすればよいですか?
これは、私が必要とする動作です。 エラーの場合 - ページをリフレッシュせずに同じページに正しいエラーメッセージを表示します。 もし成功 - 再度、何ページでは私が取得していますが、ページが別のURLと完全にリフレッシュ取得し、表示されていることである
を更新していないページで成功メッセージを表示し、この: {「ステータス」:「失敗」、「MSG」 :「\ u0027Name \ u0027」}これに
URLの変更:../respond/update私は
に投稿するアクションは基本的に私はこの失敗の状態をキャッチし、スパン内のMSGを表示したいれます。
しかし、なぜ私は別のページに連れて行っていますか?ここで
は図である。@using (Html.BeginForm("Update", "Respond", FormMethod.Post, new { id = "frmUpdate" }))
{
//have my form here
//submit button
}
Here is the js handler that posts the form:
$('#frmUpdate').submit(function() {
//validation
$.ajax({
url: this.action,
type: this.method,
data: $(this).serialize(),
beforeSend: //show loader
success: function (result) {
alert(result.status);
},
error: function (xhr, status, error) { alert('error'); }
});
return false;
});
Here is controller:
[HttpPost]
public ActionResult Update(ResponseModel model)
{
return Json(new { status="Failed", msg = "Name" });
}
EDIT:Firefoxので はそれがdiffernt URLになります。 しかし、IE8ではjquery自体からこのエラーが出ます。興味深い...
メッセージ:オブジェクトはこのプロパティまたはメソッドをサポートしていません ライン:28 文字:12724 コード:0 URI:/Content/js/external/jquery-1.6.2.min.js ?V = 3
コンソールにJavaScriptエラーが表示されていませんか? beforeSendコールバックには何がありますか? beforeSendコールバックを完了していないため、あなたの質問に表示されているものはjavascriptが無効です。 –
また、あなたのJSONに '\ u0027'があることに気付きました。コントローラーの動作がここに表示されているように見える場合、それらは存在してはいけません。 –
私はIE8でjsエラーで質問を更新しました。コントローラからすべてのコードを削除して分かりやすくしました。またbeforesendは大丈夫です。私はそれが処理されているローダーを表示するだけです。 FireFoxの – kheya