解決window.location.href參數太長

前言:一提到頁面跳轉,最經常使用的通常就是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

相關文章
相關標籤/搜索