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对象,而不能出现如上所示的状况?
2 回答

倚天杖
TA贡献1828条经验 获得超3个赞
如果你想返回其他状态码只需要在return前设一下就好.......response.setStatus(405)//可以用response.getWriter()返回json或你想要的格式,同时设置header:Content-Type:text/jsonreturnfalse;

叮当猫咪
TA贡献1776条经验 获得超12个赞
谢邀正常请求,正常响应,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,这里处理。}}});
添加回答
举报
0/150
提交
取消