关于ajax后台响应信息传递的问题

本人菜鸟,写博客是为了记录些零零碎碎的注意点。。。。

使用ajax异步调后台的时候,如果后台在做安全校验,需要直接返回错误的响应代码以及错误信息,
这时我们不用response.sendRedirect("/XXX");
或者 request .getRequestDispatcher( "/XXX" ).forward
因为这里都会执行跳转,而我们需要的是直接将结果返回就可以了,这时原本我们可以使用
response .sendError(Code, Message);
但是这里有个问题,就是当我们使用这个方法返回时,我们其实是在ajax的error回调函数接收响应,那么error有个参数是XMLHttpRequest
可以使用XMLHttpRequest.responseText得到传递过来的数据,但是这里接收到的信息其实是我们在后台传递的参数加上了一些html代码,将代码
直接显示在页面其实就是一个404风格的页面代码。
这样有时不是我们想要的,因为我们想的是error里要将错误信息显示在原来请求的页面的某个位置而不刷新页面。
所以我们可以在后台这样使用
response .setStatus(HttpServletResponse. SC_UNAUTHORIZED );
的方法设置响应的代码,然后使用
response .getWriter().print()
此方法来将参数传递过去,这样我们在error方法里拿到的响应信息就是直接传递的信息了。
如果我们想传递很多种类的信息,那么我们可以在后台传递一个json对象到前台,
response .getWriter().append( JSONObject.fromObject( result ).toString() )
这里的result是一个对象,可以放个map,转成json对象传递过去。
最后在error方法里将string转json就可以直接用了
var  result_json = jQuery.parseJSON( xhr.responseText );
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值