zoukankan      html  css  js  c++  java
  • 解决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,这样就完美的解决了参数过长的问题。

    生活中也许做的事情暂时看不到成果,但是不要害怕,你不是没有成长,而是在扎根,人生没有白吃的苦,你吃过的苦都是为将来的幸福打下基础,人生没有白走的路,每一步都算数。
  • 相关阅读:
    JS 页面生成锚点
    JavaScript AMD模块化规范
    Canvas文字的渲染基础 Better
    Canvas曲线绘制 Better
    clickhouse配置登录密码
    git pull 拉取报错:fatal: refusing to merge unrelated histories
    JAVA根据A星算法规划起点到终点二维坐标的最短路径
    JAVA使用netty建立websocket连接
    CSS设置文字超出部分自动换行
    SpringBoot(SpringMVC)使用addViewControllers设置统一请求URL重定向(映射、转发)配置
  • 原文地址:https://www.cnblogs.com/zzt-lovelinlin/p/11461097.html
Copyright © 2011-2022 走看看