问题描述
ext请求checkNewPassword方法之后,将参数传给java代码,无论返回的是成功还是失败都不执行最后failure:function(resp,opts)这段代码!EXT代码Ext.Ajax.request({url:Global_Path+'/portal/person/user.do?method=checkNewPassword',method:'post',params:{comfirmPassword:userPwdNew,comfirmrtUser:userID,comfirmrtchangepwd:changepwd},success:function(resp,opts){/*varbackStr=opts.result;alert(backStr);*/Ext.Ajax.request({url:Global_Path+'/logonpwd.do?method=userpasswordmodfy',method:'post',params:{userID:userID,oldpassword:userPwdOld,newpassword:userPwdNew},success:function(respp,optss){Ext.Msg.alert('提示','新密码修改成功!',function(){window.location.href=Global_Path+'/login.jsp';});},failure:function(respp,optss){varbackval=eval('('+respp.responseText+')');vartext=backval.text;Ext.Msg.alert('提示','密码修改失败!');}});},failure:function(resp,opts){varbackStr=resp.responseText;//varbackStrww=Ext.util.JSON.decode(req.responseText)/*alert(backStr);*/Ext.Msg.alert('提示','密码修改失败!!!');window.location.href=Global_Path+'/login.jsp';}});};});java代码if(msg.equals("成功")){try{response.getWriter().print("{success:true,info:{}}");}catch(IOExceptione){e.printStackTrace();//TochangebodyofcatchstatementuseFile|Settings|FileTemplates.}//this.sendSuccessMsg(response,"修改成功","0007");returnnull;}if(!msg.equals("成功")){try{//request.setAttribute("msg",msg);response.getWriter().print("{success:false,error:{}}");response.setStatus(HttpServletResponse.SC_EXPECTATION_FAILED);}catch(IOExceptione){e.printStackTrace();//TochangebodyofcatchstatementuseFile|Settings|FileTemplates.}//this.sendFailMsg(response,msg,"0001");returnnull;}}
解决方案
解决方案二:
failure是在ajax请求失败的时候才调用的,即使你后台错误,只要ajax与后台交互了就不会failure。你可以设置返回值,举个例子。返回success为成功,返回failure为失败,那么在ajax请求成功的事件——即success事件中通过这个返回值来判断。当然,如果请求失败,即触发failure事件,那么肯定也是修改失败的。
解决方案三:
LZ正解,一般在success中通过返回值来判断后台发生的事情,failure一般是比如服务器突然挂了没请求道后台才调用。。。
解决方案四:
把url中的方法名换一个不存在的试下
解决方案五:
不会也呵呵
解决方案六:
该回复于2011-02-14 10:13:47被版主删除
解决方案七:
引用1楼likeajin的回复:
failure是在ajax请求失败的时候才调用的,即使你后台错误,只要ajax与后台交互了就不会failure。你可以设置返回值,举个例子。返回success为成功,返回failure为失败,那么在ajax请求成功的事件——即success事件中通过这个返回值来判断。当然,如果请求失败,即触发failure事件,那么肯定也是修改失败的。
能不能说的详细点呢?我现在是这样如果后台判断不成功response.getWriter().print("{success:false,errors:{}}");是这样返回的!
解决方案八:
failure是后台抛出异常时才会触发的
解决方案九:
你后台返回格式是:response.getWriter().print("{success:false,errors:{}}");那么JS中就需要在success中判断result的值是否为truesuccess:function(result,request){varresponseArray=Ext.util.JSON.decode(result.responseText);result=responseArray.success;...}当然如果是采用表单提交,是不会出现你说的问题的,如果后台抛异常,它会执行failure里面的语句