0

AJAX 中に発生する未処理の例外に対してある種のハンドラーを実装しようとしていますが、私は初心者なので、コツをつかむことができないようです。テスト セットアップで経験したことは、例外が発生したときにクライアントに何も返されないことです。また、これらの例外はいずれも ELMAH によって処理されていません。

したがって、この質問には 2 つの部分があります。

  1. クライアントに通知できるように、エラー コードやメッセージなどの意味のあるものをサーバーに送り返すにはどうすればよいですか。
  2. AJAX コールバック中に発生した例外を ELMAH に記録させるにはどうすればよいですか?

ありがとう。

4

2 に答える 2

1
$.ajax({
    type: "post", url: "/SomeController/SomeAction",
    success: function (data, text) {
        //...
    },
    error: function (request, status, error) {
        alert(request.responseText);
    }
});

または汎用ハンドラー

$(function() {
    $.ajaxSetup({
        error: function(jqXHR, exception) {
            if (jqXHR.status === 0) {
                alert('Not connect.\n Verify Network.');
            } else if (jqXHR.status == 404) {
                alert('Requested page not found. [404]');
            } else if (jqXHR.status == 500) {
                alert('Internal Server Error [500].');
            } else if (exception === 'parsererror') {
                alert('Requested JSON parse failed.');
            } else if (exception === 'timeout') {
                alert('Time out error.');
            } else if (exception === 'abort') {
                alert('Ajax request aborted.');
            } else {
                alert('Uncaught Error.\n' + jqXHR.responseText);
            }
        }
    });
});
于 2012-11-21T12:24:51.270 に答える
1

サーバー側のコードの周りで try/catch を実行してから、クライアントが役立つエラー メッセージを出力できるように意味のあるものを返すことはできませんか?

ただし、サーバー側で発生している場合に、ELMAH がキャッチされない例外をログに記録しない理由はわかりません。他のエラーをトラップしていると確信していますか?

于 2012-11-21T12:24:02.410 に答える