jQuery .error jqXHR.responseText为空

fre*_*set 10 jquery

我有一个可以抛出异常的Java Spring MVC控制器.我有一个@ExceptionHandler设置来处理这些错误,我想用它来将异常的消息返回给调用者.

服务器代码是:

    @ExceptionHandler(DeviceException.class)
    @ResponseStatus(HttpStatus.METHOD_FAILURE)
    @ResponseBody
    public String handleException(DeviceException ex)   {
      return ex.getMessage();
    } 
Run Code Online (Sandbox Code Playgroud)

我已经测试了抛出一个DeviceException并使用来自CLI的Curl获取结果,异常的消息正在响应正文中返回.我无法让jQuery .error处理程序显示它,但我的处理程序代码是:

            error: function(jqXHR, textStatus, errorThrown) {
              // problem, the data is always blank
              alert('jqXHR.responseText = ', jqXHR.responseText);
            }
Run Code Online (Sandbox Code Playgroud)

我得到的所有响应文本都是一个空字符串.如何获取@ExceptionHandler返回的字符串以显示在jQuery错误处理程序中?

Mad*_*ker 1

尝试这样的事情:

var msg = '<div style="padding:20px;">';
msg += "We're sorry, there was an error during your request.  Please refresh the page, then try again.  If your problem persists, please contact technical support. <br /><br /> <b>Cause:</b> <br /> ";
switch (textStatus) {
    case ('timeout'):
        msg += 'Request timed out.';
        break;
    case ('error'):
        msg += 'Error status returned.';
        break;
    case ('abort'):
        msg += 'Request was aborted.';
        break;
    case ('parseerror'):
        msg += 'There was an error parsing your request.';
        break;
    default:
        msg += 'No status returned.';
        break;
}
$(this).html(msg + ' <br /><br /> ' + errorThrown + ' <br /></div>');
Run Code Online (Sandbox Code Playgroud)