当注册成功后,不能重定向到登录页面。我将前台的form改成了div

当注册成功后,不能重定向到登录页面。我将前台的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

登陆购买课程后可参与讨论,去登陆

2回答
芝芝兰兰 2019-04-16 14:39:47

同学你好。原因出在Ajax,Ajax只是利用脚本访问对应url获取数据而已,不能做除了获取返回数据以外的其它动作了。所以浏览器端是不会发起重定向的。

这个的关键还是要理解重定向做了什么。普通的重定向,只有浏览器和服务器两个参与者。浏览器端发起一个请求,服务器端处理后发起一个重定向,浏览器端从response中获取到重定向地址,发起另一个请求。也就是说,浏览器会按照response中的内容进行响应(如重定向) 。

但是Ajax请求,参与者就多了一个Ajax。一但触发了Ajax函数,它就来把控请求和相应了。如果发起一个重定向,Ajax只会获取刚才请求返回的数据,服务器给浏览器的response被Ajax拦截了,浏览器无法获取重定向地址。

在这里,同学可以将重定向写在Ajax的success中:window.location.replace("页面地址");

如果解答了同学的疑问,望采纳~

祝学习愉快~


  • 提问者 SuperAIStar #1
    十分感谢!!!!!!
    2019-04-16 15:02:04
芝芝兰兰 2019-04-16 13:35:26

同学你好。request.getRequestDispatcher(" ")需要调用forward方法才能完成转发。若仅使用request.getRequestDispatcher(" ")只是返回一个RequestDispatcher对象,该对象充当位于给定路径的资源的包装器。

另外,使用request.getContextPath(),只能获取到项目名,并不是具体的页面。

应该将这句改成:

request.getRequestDispatcher("页面名").forward(request,response);

如果解答了同学的疑问,望采纳~

祝学习愉快~


  • 提问者 SuperAIStar #1
    对不起,我十分感谢你的回答,我想说的你可能没明白,还有response.sendRedirect("。。").forward???????可不可以深入讲解一下
    2019-04-16 14:09:40
  • 芝芝兰兰 回复 提问者 SuperAIStar #2
    万分抱歉,只有request.getRequestDispatcher("").forward(request,response);表示转发,response.sendRedirect("")表示重定向,是我眼花造成同学的误会了~还请包涵!关于原问题我重新回答了哦~祝学习愉快~
    2019-04-16 14:42:02
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
从网页搭建入门Java Web2018版
  • 参与学习           人
  • 提交作业       1088    份
  • 解答问题       10204    个

如果你有Java语言基础,又想以后从事Java Web开发,那么本路径是你的不二选择!本路径从网页搭建开始入手,通过大量案例来学习Java Web基础。定能助你完成Java Web小白的蜕变!

了解课程
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师