解决window.location.href参数太长 post提交数据

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

生活中也许作的事情暂时看不到成果,可是不要惧怕,你不是没有成长,而是在扎根,人生没有白吃的苦,你吃过的苦都是为未来的幸福打下基础,人生没有白走的路,每一步都算数。
相关文章
相关标签/搜索