如何将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.responseTextjqXHR.responseXML