微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用axios发送请求,servlet验证验证数据后无法转发或重定向

问题

前端发送一个axios的请求验证,想要验证成功后跳转页

axios.post('http://localhost:8080/javaWeb/RegisController', params)
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws servletexception, IOException {
    //...
    this.getServletContext().getRequestdispatcher("/home.html").forward(req, resp);
}

可以看到请求标头和响应体都已经返回,但是页面就是没有跳转,还是停留在原来的页面

原因

原因其实也不难,主要是servlet拿到的是ajax发送过来的request,也就是说这个请求不是浏览器请求的,而是ajax请求的,所以,servlet对request进行请求转发或重定向都不能影响浏览器的跳转…..也就出现了我们遇到的请求转发和重定向失效的问题.

解决问题

不管正确还是错误,都应该返回一个值给ajax,让ajax去跳转或干其他的事.使用ajax本来就是为了局部刷新网页,而不是跳转

axios.post('http://localhost:8080/javaWeb/RegisController', params)
    .then(response => {
        //成功则改变路径
        location.href = "./home.html"
    }, reason => {
        alert('验证码错误,请重试!');
        //验证码
        addData();
    })
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws servletexception, IOException {
    if (判断条件){
        //响应状态码
        resp.setStatus(200);
    }else{
        resp.setStatus(404);
    }
}

参考文档:(11条消息) servlet的后台页面跳转和ajax的页面跳转_tao911110的博客-CSDN博客

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐