1. 程式人生 > >實際專案中html跳轉無響應原因及解決方案總結

實際專案中html跳轉無響應原因及解決方案總結

    博主自學框架不久,經驗不多,導致出現非常多的細節,低階問題。本著不要臉精神,為廣大自學同胞提供一些低階錯誤的錯誤原因以及解決方案。以下帶來  springmvc框架下前端html中window.location失效的原因以及解決方案。

       首先普通html中window.location跳轉失敗的原因有以下幾個:

    1.js中程式碼字元錯誤。

    2.觸發跳轉的控制元件在form表單中或者在submit控制元件中跳轉。

     對於上述兩個問題的解決方式

    1.正確js如下,請認真核對。

        <script> 
            function test(){
                alert("測試");
                window.location="www.xxx";
            }
        </script>

    2.在使用form表單時,可以直接使用form表單中  action=“”屬性進行跳轉,如果此方法不能滿足需求。可以將form表單

    改為 div,然後將submit改為button。

以上普通html中跳轉失敗,無響應問題百度基本上都有,下面介紹重點

對於在實際專案中,跳轉後,html中window.location失效的原因

 對於實際專案中。做了登入驗證,
當未查詢到session,即未登入情況下,訪問任何地址都會轉發到localhost:8180/sys/toLogin  

然後返回login.html登入頁面。但這個方法下的跳轉後的地址是 原來使用者輸入訪問的路徑,用程式碼驗證,跳轉錢輸出

window.location 資訊



觀察如上兩張圖,可有看出,當用戶連線時間超時,或者被管理員踢下線時,使用者再次重新整理頁面,或者直接訪問localhost:8180/html/main.html時候,是會直接轉發到login頁面,但地址依據是localhost:8180/html/main.html。此時使用者進行登入操作,

此句程式碼是相當於不執行的。所以會出現正確登入,但卻無法跳轉到main.html頁面

兩個解決方案

1.進行判斷,清空window.location


但以上方案並不完美。

2.從根源出發。我們首先要明白,重定向和跳轉,區別和概念自行百度,博主不過多贅述(其實我也不是很懂),其中轉發位址列沒有變化,而重定向位址列有變化,這個區別是關鍵。

在servlet中呼叫重定向的語句如下:

response.sendRedirect("new.html");//重定向到new.html

根據此句,將專案中登入驗證中轉發改為重定向。


輸入localhost:8180/html/main.html 返回頁面如下

其中地址也變成了固定的localhost:8180/sys/toLogin  

此時,window.location就可以正確跳轉了。

ps:第一次寫部落格,有點緊張,若是文中存在錯誤,歡迎各位大佬指正。謝謝