从servlet中调用错误jQuery ajax回调

时间:2012-06-18 12:35:48

标签: java jquery servlets

在我的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();
    }

,而不是在响应上打印“error”,在jQuery代码中调用'error'回调。

3 个答案:

答案 0 :(得分:5)

您必须设置http status code以外的200来调用jQuery Ajax中的错误回调。您可以将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区块中。

答案 1 :(得分:2)

您有两种选择:

  1. 处理servlet中的每个错误并在JSON响应中包装错误/成功详细信息,如Cranio指出
  2. 使用HttpServletResponse将状态代码设置为http 500(或其他错误代码),然后在error脚本中处理jQuery回调

答案 2 :(得分:1)

使用您的AJAX页面返回具有两个值的JSON对象

  • 实际数据
  • 错误代码

因此,您可以在AJAX页面中处理错误逻辑。 此解决方案解决了AJAX页面中的自定义错误,可以使用现有代码处理AJAX调用中的错误。