【问题标题】:Invoke error jQuery ajax callback from within servlet从 servlet 中调用错误 jQuery ajax 回调
【发布时间】: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 代码中调用“错误”回调。

【问题讨论】:

    标签: java jquery servlets


    【解决方案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】:

      你有两个选择:

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

      【讨论】:

        【解决方案3】:

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

        • 实际数据
        • 错误代码

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

        【讨论】:

          猜你喜欢
          • 2011-11-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-12-11
          • 1970-01-01
          • 2014-03-26
          • 2013-03-28
          • 1970-01-01
          相关资源
          最近更新 更多