SpringMVC: 拦截器Interceptor preHandle()返回false,为何HTTP返回码是200?

HTTP返回码是200让前端觉得是成功的啊,这种状况前端如何检测?譬如前端是ajax调用,dataType=“json”时,怎么办?判断data是否为null?
$.ajax({
url:"${ctx}/dict/add",
type:"post",
dataType:"json",
//contentType:"application/json",
async:false,
data:{
csrfToken:function(){
return$("#csrfToken").val();
},
bookStore:bookStore
},
success:function(data){
if(data==null){//这里判断data==null?
BTW:contentType为"application/json",是不是data只能是一个json对象,而不能出现如上所示的状况?
慕尼黑8549860
浏览 775回答 2
2回答

倚天杖

如果你想返回其他状态码只需要在return前设一下就好.......response.setStatus(405)//可以用response.getWriter()返回json或你想要的格式,同时设置header:Content-Type:text/jsonreturnfalse;

叮当猫咪

谢邀正常请求,正常响应,200是正常的你想要怎么判断?我举个栗子吧:我的一个拦截器(判断用户是否登录):@OverridepublicbooleanpreHandle(HttpServletRequestrequest,HttpServletResponseresponse,Objecthandler)throwsException{//session是否存在用户信息UserInfouserInfo=(UserInfo)request.getSession().getAttribute("LOGIN_USER");if(userInfo==null){//异步请求返回AsynchronousResultresult=newAsynchronousResult();result.setMessage("test");response.setContentType("application/json;charset=UTF-8");response.getWriter().print(SerializeUtil.serialize(result));returnfalse;}returntrue;}AsynchronousResult对象是什么呢?publicclassAsynchronousResultimplementsSerializable{privatestaticfinallongserialVersionUID=-1072103465426536854L;/***结果*/privateStringresult="fail";/***消息*/privateStringmessage;/***获取结果*/publicStringgetResult(){returnthis.result;}/***设置结果*/publicvoidsetResult(Stringresult){this.result=result;}/***获取消息*/publicStringgetMessage(){returnthis.message;}/***设置消息*/publicvoidsetMessage(Stringmessage){this.message=message;}}相信你应该明白了,我异步请求,如果没登录,返回了一个AsynchronousResult对象,且这个对象的result属性是fail.那么前端怎么处理呢?:ajax({url:"/test,type:"POST",data:requestDate,success:function(res){if(res.result==='success'){//dosothing}else{//返回的res.result是fail,这里处理。}}});
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript