如何将Javaexception信息返回给jQuery.ajax REST调用?
我有一些jQuery代码,它对Java后端进行REST调用。 处理后端函数可能会遇到exception。 将此信息备份到Javascript的最佳方法是什么? 在测试中,我在Java中捕获了exception,并将HTTP状态代码设置为500.这导致$ .ajaxerror handling程序被调用,如预期的那样。 error handling程序的args实际上并不包含任何有用的信息。 理想情况下,我想以某种方式将Exception.getMessage()字符串传播回error handling程序,但不知道如何。
function handleClick() { var url = '/backend/test.json'; $.ajax({ type: "POST", url: url, cache: false, dataType: "json", success: function(data){ alert("it worked"); }, error: function(jqXHR, textStatus, errorThrown) { alert(jqXHR); alert(textStatus); // this comes back as "error" alert(errorThrown); // this comes back as "undefined" } }); }
我能够以这种方式将自定义错误消息(java String)发送回基于jQuery的客户端。 我认为我的自定义消息可以替换为您想要/需要的exception信息
在控制器中:
public static void handleRuntimeException(Exception ex, HttpServletResponse response,String message) { logger.error(ex); response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); response.getWriter().write(message); response.flushBuffer(); }
在client / javascript中(从错误事件的ajax调用)
displayError:function(jqXHR, textStatus, errorThrown){ if(jqXHR.responseText !== ''){ alert(textStatus+": "+jqXHR.responseText); }else{ alert(textStatus+": "+errorThrown); } }
希望这可以帮助/
使用servlet响应对象的sendError
方法,该方法允许您设置状态代码和状态文本消息。
文档
示例 编辑
jqXHR参数使您可以访问所有响应信息,包括状态消息。
jqXHR.statusText
将为您提供传递给sendError
方法的状态消息。
如果您需要的不仅仅是短消息,您可以将数据写入响应输出,并从jqXHR.responseText
或jqXHR.responseXML
。