关于登录后跳转的问题。

looyo 2015-03-05
登录页面,是表单使用jquery.validate 插件,用于验证并且提交。现在问题是,点击登录按钮后,后台控制器跟踪运行完毕后,浏览器还是停留在login.html页面不会跳转。
提交部分的片段代码如下
submitHandler : function(form)
            {
                var operData={
                    loginName:$("#userNameFld").val(),
                    passwd:$("#passwdFld").val()
                };
                $.ajax
                ({
                    url         : "/sysmng/usermng/UserLogin.do",
                    type        : "POST",
                    contentType : "application/json",
                    data        : JSON.stringify(operData),

                    success     : function (jsonResult)
                    {
                        var x=jsonResult;
                    },
                    error:function (err)
                    {
                        var b=err;
                        $("#errmsg").html(err.responseText);
                    }
                });
            }


现在不知道 UserLogin.do 改如何写,才能保证登录完毕后,页面自动跳转到/index.html 中来。 控制器代码如下:


@RequestMapping(value = "/UserLogin", method = RequestMethod.POST)
        public     ModelAndView queryUsers(@RequestBody ModelMap map,HttpServletRequest request,HttpServletResponse response)
        { 
            String loginName = (String) map.get("loginName");
            String password = (String) map.get("passwd");
            LoginUser lu=null;
           // 此处代码省略
            if(用户验证成功,lu不再为null)
            {
                
                    operResultStr="";
                    resultMap.put("operReuslt", operResultStr);
                    resultMap.put("loginUser",lu);
                    request.getSession(true).setAttribute("LoginUser",lu);

                    try {
                        request.getRequestDispatcher("/index.html").forward((ServletRequest) request, (ServletResponse) response);
                    }catch(Exception  ex)
                    {
                        ex.printStackTrace();
                    }
                    result=new ModelAndView("index",resultMap);
                    return result;
                }else
                {
                    operResultStr="Fail to login";

                }
            }
            resultMap.put("operReuslt", operResultStr);
            result=new ModelAndView("/login.html",resultMap);

            return result;
        }
Michael_113 2015-03-09
异步请求,返回个标识,前台跳转啊
looyo 2015-03-09
Michael_113 写道
异步请求,返回个标识,前台跳转啊


谢谢你的回复,这种实现方法,我已经想到了,不过我想看看还有没有其它方式。
alan3258 2015-03-12
@RequestMapping(value = "/UserLogin", method = RequestMethod.POST)  
        public     ModelAndView queryUsers(@RequestBody ModelMap map,HttpServletRequest request,HttpServletResponse response)  
        {   
            String loginName = (String) map.get("loginName");  
            String password = (String) map.get("passwd");  
            LoginUser lu=null;  
           // 此处代码省略  
            if(用户验证成功,lu不再为null)  
            {  
                  
                    operResultStr="";  
                    resultMap.put("operReuslt", operResultStr);  
                    resultMap.put("loginUser",lu);  
                    request.getSession(true).setAttribute("LoginUser",lu);  
  
                    try {  
                        request.getRequestDispatcher("/index.html").forward((ServletRequest) request, (ServletResponse) response);  
                    }catch(Exception  ex)  
                    {  
                        ex.printStackTrace();  
                    }  
                    result=new ModelAndView("index",resultMap);  
                    return result;  
                }else  
                {  
                    operResultStr="Fail to login";  
  
                }  
            }  
            resultMap.put("operReuslt", operResultStr);  
            [b]//这里直接new一个你需要跳转到的目标地址就好了
            //例如 result=new ModelAndView("/main.html",resultMap);
[/b]
            result=new ModelAndView("/login.html",resultMap);  
  
            return result;  
        }  
devilyard 2015-03-17
楼上这个方法恐怕不起作用,Ajax请求应该是不能处理后台跳转的
qwertyxl 2015-03-18
不用改后台,ajax登录成功后,在success回调函数里面写window.location="index.html";
Global site tag (gtag.js) - Google Analytics