使用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博客


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM