1

次のような jQuery を使用した ajax post 呼び出しがあります。

var params = {};
params.type = "POST";
params.url = url;
params.success = successFn;
params.error = errorFn;
$.ajax(params);

この場合、私の URL は、エラー処理をテストするために意図的に例外をスローする Web サービスです。これを jetty で実行すると、エラー関数が例外テキストで呼び出されます。これをTomcatで実行すると、エラー関数が「Internal Server Error」で戻ってきます。

どちらの場合も、サーバーでスローされた例外が表示されますが、ブラウザーに返されるメッセージは異なります。

これは、アプリケーション レベルで処理する必要があるものですか? または、このためのTomcat構成はありますか?

4

1 に答える 1

1

Jetty と Tomcat は応答の処理が異なるようです。

Content-TypeHTTP ヘッダー、サーバーから返された HTTP ステータス コードを見て、エラー ハンドラーがクライアントに応答する前にサーバー上で応答をリダイレクトしているかどうかを確認します。

サーバー上で動作する可能性のあるものの例として役立つかもしれないいくつかの疑似コード:

HttpServletResponse resp; // likely passed in as argument

resp.setContentType("application/json");
try {
    // do something
} catch (Exception e) {
    String jsonError = "{\"error\":\"" + e.getMessage() + "\"}";
    resp.getWriter().print(jsonError);
    resp.sendError(500);
}

$.ajaxError()このようにして、JQuery のイベント ハンドラーを使用してエラー メッセージを解析できるようになります。

于 2013-09-12T03:34:21.563 に答える