一、前因
刚学完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'
);
});
更多推荐
ajax实现页面跳转
发布评论