[解決済み] ASP.NET MVC Ajaxのエラー処理について
2022-09-28 16:41:22
質問
jquery ajax がアクションを呼び出したときに、コントローラで発生する例外をどのように処理すればよいのでしょうか?
例えば、デバッグモードまたは通常のエラーメッセージの場合、例外メッセージを表示するajax呼び出し中のあらゆる種類のサーバー例外に実行されるグローバルjavascriptコードが欲しいです。
クライアント側で、私はajaxエラーで関数を呼び出します。
サーバー側では、カスタムアクションフィルタを書く必要がありますか?
どのように解決するのですか?
サーバーが200以外のステータスコードを送信した場合、エラーコールバックが実行されます。
$.ajax({
url: '/foo',
success: function(result) {
alert('yeap');
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
alert('oops, something bad happened');
}
});
で、グローバルなエラーハンドラを登録する場合は
$.ajaxSetup()
メソッドを使用します。
$.ajaxSetup({
error: function(XMLHttpRequest, textStatus, errorThrown) {
alert('oops, something bad happened');
}
});
もう一つの方法は、JSONを使うことです。つまり、例外をキャッチしてJSONレスポンスに変換する、サーバー上のカスタムアクションフィルタを書くことができます。
public class MyErrorHandlerAttribute : FilterAttribute, IExceptionFilter
{
public void OnException(ExceptionContext filterContext)
{
filterContext.ExceptionHandled = true;
filterContext.Result = new JsonResult
{
Data = new { success = false, error = filterContext.Exception.ToString() },
JsonRequestBehavior = JsonRequestBehavior.AllowGet
};
}
}
という属性で、コントローラのアクションを装飾します。
[MyErrorHandler]
public ActionResult Foo(string id)
{
if (string.IsNullOrEmpty(id))
{
throw new Exception("oh no");
}
return Json(new { success = true });
}
を実行し、最後にそれを起動します。
$.getJSON('/home/foo', { id: null }, function (result) {
if (!result.success) {
alert(result.error);
} else {
// handle the success
}
});
関連
-
[解決済み] HTTPヘッダを送信した後、サーバーがステータスを設定できない IIS7.5
-
[解決済み] 私のJavaScriptコードは "No 'Access-Control-Allow-Origin' header is present on requested resource "というエラーを受け取りますが、Postmanはそうならないのはなぜですか?
-
[解決済み] jQueryを使ったAjaxリクエストの中断
-
[解決済み] jQuery Ajax呼び出し後のリダイレクトリクエストを管理する方法
-
[解決済み] ファイルアップロード ASP.NET MVC 3.0
-
[解決済み] ASP.NET MVCでビューをコンパイルする
-
[解決済み】jQuery Ajaxの呼び出しとHtml.AntiForgeryToken()について)
-
[解決済み】MVC4 DataType.Date EditorForがChromeで日付の値を表示しない、Internet Explorerでは問題なし。
-
[解決済み] ASP.NET MVCのモデルでUrlHelperを呼び出す
-
[解決済み] ASP.NET MVCの検証をjquery ajaxで行うには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 既存のデータベースの選択されたテーブルからDbContextをScaffoldすることができますか[重複]。
-
[解決済み] RedirectToActionでURLが変更されない、またはIndexビューに移動しない
-
[解決済み] [Solved] ASP.NET MVCでアクションの絶対URLを見つけるにはどうすればよいですか?
-
[解決済み】サービスは常にDTOを返すべきですか、それともドメインモデルも返すことができますか?
-
[解決済み】NULLモデルを持つrenderpartialは、間違った型を渡される
-
[解決済み】MVC 4 @Scripts "does not exist".
-
[解決済み] [Solved] ASP.NET MVCで404を適切に処理するには?
-
[解決済み] [Solved] ASP.NET MVCコントローラメソッドからJSON.NETでシリアライズされたcamelCase JSONを返すにはどうすればよいですか?
-
[解決済み] ASP.NET MVCにおけるロールベースアクセスコントロール(RBAC)とクレームベースアクセスコントロール(CBAC)の比較
-
[解決済み] ASP.NET MVC Html.ActionLinkにアンカータグを含める