解決window.location.href參數太長 post提交數據


前言:一提到頁面跳轉,最常用的一般就是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,這樣就完美的解決了參數過長的問題。

生活中也許做的事情暫時看不到成果,但是不要害怕,你不是沒有成長,而是在扎根,人生沒有白吃的苦,你吃過的苦都是為將來的幸福打下基礎,人生沒有白走的路,每一步都算數。


免責聲明!

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



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