当注册成功后,不能重定向到登录页面。我将前台的form改成了div
$("input[type='submit']").click(function () {
// alert("111");
var pwd = $("input[name='password']").val();
var cpwd = $("input[name='checkPWD']").val();
/*检测密码是否一致*/
if (pwd != cpwd) {
alert("两次密码不一样");
} else {
/*接收后台对输入的值是否符合正则表达式*/
$.ajax({
"url": "/mook_library/adduser",
"data": {
"username": $("input[name='username']").val(),
"password": $("input[name='password']").val(),
"phone": $("input[name='phone']").val(),
"email": $("input[name='email']").val()
},
"type": "post",
"dataType": "json",
"success": function (data) {
console.log(data);
alert(data);
},
"error": function (data) {
console.log(data);
}
});
}
});
java:
response.sendRedirect(request.getContextPath());
调试的时候可以执行到这一句,但是不跳转
正在回答 回答被采纳积分+1
同学你好。原因出在Ajax,Ajax只是利用脚本访问对应url获取数据而已,不能做除了获取返回数据以外的其它动作了。所以浏览器端是不会发起重定向的。
这个的关键还是要理解重定向做了什么。普通的重定向,只有浏览器和服务器两个参与者。浏览器端发起一个请求,服务器端处理后发起一个重定向,浏览器端从response中获取到重定向地址,发起另一个请求。也就是说,浏览器会按照response中的内容进行响应(如重定向) 。
但是Ajax请求,参与者就多了一个Ajax。一但触发了Ajax函数,它就来把控请求和相应了。如果发起一个重定向,Ajax只会获取刚才请求返回的数据,服务器给浏览器的response被Ajax拦截了,浏览器无法获取重定向地址。
在这里,同学可以将重定向写在Ajax的success中:window.location.replace("页面地址");
如果解答了同学的疑问,望采纳~
祝学习愉快~
同学你好。request.getRequestDispatcher(" ")需要调用forward方法才能完成转发。若仅使用request.getRequestDispatcher(" ")只是返回一个RequestDispatcher对象,该对象充当位于给定路径的资源的包装器。
另外,使用request.getContextPath(),只能获取到项目名,并不是具体的页面。
应该将这句改成:
request.getRequestDispatcher("页面名").forward(request,response);如果解答了同学的疑问,望采纳~
祝学习愉快~
- 参与学习 人
- 提交作业 1088 份
- 解答问题 10204 个
如果你有Java语言基础,又想以后从事Java Web开发,那么本路径是你的不二选择!本路径从网页搭建开始入手,通过大量案例来学习Java Web基础。定能助你完成Java Web小白的蜕变!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星