问题描述
在做一个登录模块action代码publicStringlogin(){Useruser=this.loginService.getUserByUsernameAndPassword(this.getModel().getUsername(),this.getModel().getPassword());if(user!=null){OAUtils.FromSession("user",user);return"SUCCESS";}else{this.message="用户名或密码错误";return"index";}}
配置文件<packagename="login"namespace="/"extends="json-default"><actionname="loginAction_*"method="{1}"class="loginAction"><resulttype="json"name="index"><paramname="root">action</param></result><resultname="SUCCESS">WEB-INF/content/index.jsp</result></action></package>
ajax提交$().ready(function(){$("#loginform").submit(function(){returnfalse});$("#loginButton").unbind();$("#loginButton").bind("click",function(){$.post("loginAction_login.action",$("#loginform").serialize(),function(data){if(data.message!=undefined){alert(data.message);}else{//问题就在这里,在IE9上没有效果$("html").html(data);}})})})
解决方案
解决方案二:
ajax在前台判断(从后台返回一个登陆成功或失败的信息),如果失败就弹出登陆失败提示,成功的话就location到你想跳转的成功页面,当然如果你还想做些东西,可以location到一个action中,再跳转页面
解决方案三:
首先,ajax后台处理可以不需要页面跳转的(意思是ajax需要找到这个方法不方法不需要返回值,action配置文件只需要配置这个方法不需要配置其他返回值等参数),只需要一个输出流即可,PrintWirterout=response.getWriter(),获取response可以采用HttpServletResponseresponse=ServletActionContext.getResponse();然后直接out(...即可);如果你返回的是json数据,那么//问题就在这里,在IE9上没有效果 $("html").html(data); } },“json”),加上这个返回类型,就可以获取了。然后在jquery中使用eval()方法解析json对象即可。