8

エラーが受信された場合のajax呼び出し内で、アラートが発生します:

    $.ajax({
        url: "myUrl",       
        type: 'POST',
        dataType : "text",
        data : ({
            json : myJson
        }),
        success : function(data) {
                 alert('success');
    },
    error : function() {
                alert ('error');
    } 

java内から、例外がスローされた場合にjqueryでエラーコールバックを呼び出すために送り返すことができます。だから次のようなもの:

    try {
        PrintWriter out = resourceResponse.getWriter();
        out.println("success");
        out.close();
    } catch (Exception e) {
        PrintWriter out = resourceResponse.getWriter();
        out.println("error");
        out.close();
    }

つまり、応答に「エラー」を出力する代わりに、jQueryコード内で「エラー」コールバックを呼び出します。

4

3 に答える 3

5

jQueryAjaxでエラーコールバックを呼び出すhttp status code以外の何かを設定する必要があります。次のような200エラーステータスを設定できます500 (which is for Internal Server Error)

catch (Exception e) {
    resourceResponse.setProperty(resourceResponse.HTTP_STATUS_CODE, "500"); 
    PrintWriter out = resourceResponse.getWriter();
    out.println("error");
    out.close();
}

あなたのcatchブロックで。

于 2012-06-18T12:45:19.407 に答える
2

2つのオプションがあります。

  1. Cranioが指摘したように、サーブレットで各エラーを処理し、エラー/成功の詳細をJSON応答内にラップします
  2. HttpServletResponseステータスコードをhttp500(または他のエラーコード)に設定してから、スクリプトerrorでコールバックを処理するために使用しますjQuery
于 2012-06-18T12:46:21.023 に答える
1

AJAXページを使用して、2つの値を持つJSONオブジェクトを返します

  • 実際のデータ
  • エラーコード

したがって、AJAXページでエラーロジックを処理できます。このソリューションは、AJAXページのカスタムエラーを考慮します。AJAX呼び出しのエラーは、既存のコードで処理できます。

于 2012-06-18T12:40:25.473 に答える