从 servlet 中调用错误 jQuery ajax 回调

Posted

技术标签:

【中文标题】从 servlet 中调用错误 jQuery ajax 回调【英文标题】:Invoke error jQuery ajax callback from within servlet 【发布时间】:2012-06-20 10:24:36 【问题描述】:

在我的 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 代码中调用“错误”回调。

【问题讨论】:

【参考方案1】:

您必须设置 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 块中。

【讨论】:

【参考方案2】:

你有两个选择:

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

【讨论】:

【参考方案3】:

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

实际数据 错误代码

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

【讨论】:

以上是关于从 servlet 中调用错误 jQuery ajax 回调的主要内容,如果未能解决你的问题,请参考以下文章

jQuery Ajax 操作函数

jQuery Ajax 操作函数汇总

无法从 jsp 调用 servlet 文件 - 发现 404 错误 [重复]

尝试从 JSP 表单调用 servlet 时出现 404 错误

Java ajax 将值从 jsp 传递到 servlet

Jquery attr()获取值错误