前言:一提到頁面跳轉,最常用的一般就是window.location.href,如果需要帶參數,也許可以在后面用?拼上,但這樣並不安全,而且有個更嚴重的問題,這樣的拼接是有長度限制的,如果達到好幾千個字符,比如傳個base64???這時你會發現瀏覽器報錯了,直接不能傳參了。
需求:解決window.location.href參數過長的問題
思路:我們再想想別的解決方案,我們知道post請求是沒有參數長度限制的,而且還是比較安全的。post請求的方式第一能想到的肯定是ajax,但是可惜的是ajax好像不能跳轉,但是不要忘記還有一種也能設置成post請求的,那就是表單了。那么這樣我們就可以試試創建一個隱藏的表單,通過提交表單的方式來跳轉。
方案:
post('******.do',{"username":p1,"userId":p2,"userCode":p3,"imgUrl":imgUrl}); function post(url, params) { // 創建form元素 var temp_form = document.createElement("form"); // 設置form屬性 temp_form .action = url; temp_form .target = "_self"; temp_form .method = "post"; temp_form .style.display = "none"; // 處理需要傳遞的參數 for (var x in params) { var opt = document.createElement("textarea"); opt.name = x; opt.value = params[x]; temp_form .appendChild(opt); } document.body.appendChild(temp_form); // 提交表單 temp_form .submit(); }
可以看到,這里相當於做了一個隱藏的一次性使用的表單,該表單的提交方式是post,這樣就完美的解決了參數過長的問題。
生活中也許做的事情暫時看不到成果,但是不要害怕,你不是沒有成長,而是在扎根,人生沒有白吃的苦,你吃過的苦都是為將來的幸福打下基礎,人生沒有白走的路,每一步都算數。