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

除了在 jQuery Ajax 中调用错误回调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

你有两个选择:

  1. 正如 Cranio 所指出的,处理 servlet 中的每个错误并在 JSON 响应中包装错误/成功细节
  2. 用于HttpServletResponse将状态代码设置为 http 500(或其他错误代码),然后在脚本中处理error回调jQuery
于 2012-06-18T12:46:21.023 回答
1

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

  • 实际数据
  • 错误代码

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

于 2012-06-18T12:40:25.473 回答