使用JQuery .ajax()处理自定义异常

时间:2013-09-03 06:26:54

标签: ajax jquery spring-mvc

以下是我的控制器方法:

@RequestMapping(value = "/com/uData.htm", method = RequestMethod.GET)
public @ResponseBody String getData(HttpServletRequest request, 
      HttpServletResponse response, @RequestParam(value="sn", required=true) String sn, 
      @RequestParam(value="serv", required=true) String serv,
      @RequestParam(value="date", required=false) String date) throws IOException{
try {
      Srring data =...;
      if(condition == false) {
         throw new IOException("my exception message");
    }
...
...

    } catch (IOException ie) {
        response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, ie.getMessage());
        response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
        response.getWriter().write(ie.getMessage());
        response.flushBuffer();
    }

  return data;
}

这就是我的jQuery ajax的样子

$.ajax({
    cache: false,
    url: "/com/uData.htm",
    dataType: 'json',
    data: {"sn": sn, "serv": selServ},
    success: function(dt){
    result = dt;
  },
    error: function(jqXHR, textStatus, errorThrown) {
      if(jqXHR.responseText !== '') {
          alert(textStatus+": "+jqXHR.responseText);
    } else {
          alert(textStatus+": "+errorThrown);
       }  
     }
  });

我的jsp中返回的自定义异常消息不是警报 使用

alert(textStatus+": "+jqXHR.responseText);

如何将自定义异常消息(“我的异常消息”)返回给JSP?

2 个答案:

答案 0 :(得分:1)

将其放入方法的结果中。而不是返回String,而是返回一个具有两个String属性的对象:resultexception

这样,客户端success代码可以检查异常。

如果您需要更多详细信息,请添加更多字段(例如异常类型或发生异常的其他信息)。

答案 1 :(得分:0)

尝试将response.responseText解析为对象,这样您就可以只提取ExceptionMessage(您的自定义异常消息)。

            var message = $.parseJSON(jqXHR.responseText);
            alert(textStatus+': '+message.ExceptionMessage);

我的代码示例使用jQuery.parseJSON method从JSON中提取对象。