此网站为PM小曹的博客网站,致力于分享项目管理、技术干货、职场心得,欢迎关注交流!
当前位置:PM小曹社区 > 技术干货 > 正文

解决window.location.href参数过长

07-20 技术干货 【作者:PM小曹】

一提到页面跳转,最常用的一般就是window.location.href,如果需要带参数,也许可以在后面用?进行拼接,但这样并不安全,而且有个更严重的问题,这样的拼接是有长度限制的,如果达到好几千个字符,比如传个base64???这时你会发现浏览器报错了,直接不能传参了。
那么如何来解决这个问题呢?
我们知道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,这样就完美的解决了参数过长的问题。

版权保护: 本文由 PM小曹社区 收录,转载请保留链接: http://www.pmxiaocao.com/jsgh/2019_67.html

尚未注册畅言帐号,请到后台注册
博客主人PM小曹
一枚技术型项目经理,从事编程开发达8年之久,项目管理4年之长,期待与你相识!
  • 文章总数
  • 38840访问次数
  • 建站天数
  • 欢迎关注博主微信公众号[PM小曹]

    微信公众号

    标签