zoukankan      html  css  js  c++  java
  • 解决window.location.href参数太长

    前言:一提到页面跳转,最常用的一般就是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,这样就完美的解决了参数过长的问题。

  • 相关阅读:
    java Class的 getSuperclass与getGenericSuperclass区别
    再有人问你volatile是什么,把这篇文章也发给他
    深入理解乐观锁与悲观锁
    再有人问你Java内存模型是什么,就把这篇文章发给他
    再有人问你synchronized是什么,就把这篇文章发给他
    《成神之路-基础篇》JVM——Java内存模型(已完结)
    css
    css
    require.js
    css -border
  • 原文地址:https://www.cnblogs.com/Kingram/p/10044583.html
Copyright © 2011-2022 走看看