ajax实现页面跳转

一、前因

        刚学完ajax没多久,想着写个注册界面,利用ajax把用户名和密码传过来,注册成功以后跳转到登录界面,之前一直用的是Servlet来重定向,结果直接就是说没有反应,调了半天就是不成功。

        查了半天,发现是ajax的问题,它的特点本来就是局部刷新,所以重定向没法用了,我又想到一个方法,既然后端传不了,那我走前端,前端里面不是有一个方法:location.href,我就喜滋滋的把路径一封装传前面去了。

        我真的会谢,又错了,又调了半天还是不行。上网去查,学到一个新的方法:top.location.href,诶,这个top就有意思了,它可以跳脱出框架,在顶层打开新窗口,看起来就很有戏,果然,成功了。

二、使用到的方法

        top.location.href = url;//url表示要跳转的路径        

三、代码实现

        1.后端部分

private void register(HttpServletRequest req, HttpServletResponse resp) throws IOException {
        System.out.println("register");

        String name = req.getParameter("name");
        String password = req.getParameter("password");
        Map<String , Object> map = new HashMap<>();

        if(name != null && password != null && !userService.isHavaUser(name)) {
            System.out.println("注册成功");
            userService.register(name, password);
            map.put("url", req.getContextPath() + "/login.jsp");//将要跳转的路径封装传过去
            map.put("login", true);
        } else {
            map.put("msg", "用户名已存在,请换一个用户名");
            map.put("login", false);
        }

        resp.setContentType("text/html;charset=utf-8");
        ObjectMapper mapper = new ObjectMapper();
        mapper.writeValue(resp.getWriter(), map);
    }

        2.前端部分

$("#buttonId").bind('click', function () {
            var name = $("#nameId").val();
            var password = $("#passwordId").val();

            $.post(
                '<%=request.getContextPath()%>/user?method=register',
                {"name" : name, "password" : password},
                function (jsonObj) {
                    if(jsonObj.login) {
                        top.location.href = jsonObj.url;//进行页面跳转
                    } else {
                        alert(jsonObj.msg);
                    }
                },
                'json'
            );
        });

  • 7
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值