1. $.post 当后台发生异常时,回调函数还是会接受到数据。也就是不管正确错误的数据都会接受到数据
2.$.ajax 中的回调函数success和error,分别是用来响应后台请求成功时的数据处理和请求出现错误时的数据处理的。因为服务器容器设置发生错误时所对应的状态码,这时ajax对状态码进行分析,是调用回调函数success还是error函数,如果状态码是错误的状态码,则调用error函数。
而在struts2整合ajax时,由于struts内部没有对除了ServletException之外的异常进行处理,也就是说,struts2只对servletException异常进行处理,没有对其他异常进行处理。这时当发生其他异常之后,没有设置任何错误的状态码,而是将错误信息封装到一个模板页面中,将模板页面返回到浏览器。
就在这时,利用$.ajax请求时,不管后台有没有发生异常,都会执行success函数,所以也就无法利用$.ajax提供的error回调函数进行发生异常时的数据处理。
总结:
针对struts2与ajax结合,无论采用$.ajax还是$.post都捕获不到服务器产生的异常。 但是$.ajax捕获的错误在原生servlet中能做到。