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