前言:一提到頁面跳轉,最經常使用的通常就是window.location.href,若是須要帶參數,也許能夠在後面用?拼上,但這樣並不安全,並且有個更嚴重的問題,這樣的拼接是有長度限制的,若是達到好幾千個字符,好比傳個base64???這時你會發現瀏覽器報錯了,直接不能傳參了。ajax
需求:解決window.location.href參數過長的問題瀏覽器
思路:咱們再想一想別的解決方案,咱們知道post請求是沒有參數長度限制的,並且仍是比較安全的。post請求的方式第一能想到的確定是ajax,可是惋惜的是ajax好像不能跳轉,可是不要忘記還有一種也能設置成post請求的,那就是表單了。那麼這樣咱們就能夠試試建立一個隱藏的表單,經過提交表單的方式來跳轉。安全
方案:app
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,這樣就完美的解決了參數過長的問題。post