从 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 回调的主要内容,如果未能解决你的问题,请参考以下文章
无法从 jsp 调用 servlet 文件 - 发现 404 错误 [重复]