window.open()提交数据,参数过长会限制。请改成post提交

解决方法1: 将下边这段代码放入你window.open的那个js中。调用即可!
参数解释:url传入请求路径(var url = ip+端口+"/Jcdwjccr/jcrzhxxcxdy?grxx="+grxx1)
         params默认穿空就行,参数都放在url中function openPostWindow(url, params) {
  
      var newWin = window.open(),
      formStr = '';
      //设置样式为隐藏,打开新标签再跳转页面前,如果有可现实的表单选项,用户会看到表单内容数据
       formStr = '<form style="visibility:hidden;" method="POST" action="' + url + '">' +
            '<input type="hidden" name="params" value="' + params + '" />' +
            '</form>';
  
     newWin.document.body.innerHTML = formStr;
     newWin.document.forms[0].submit();
    
     return newWin;
}

具体代码如下:

解决方法2: 可以换一种思路,如果请求参数太长,例如:base64编码的图片(超8000字符),可以将base64劈成短字符,我是劈成5000传一次。3000传一次, 这样总可以了吧,大部分时候也不至于能超8000的字符了吧,在contoller中,将参数放到全局变量中,最后一次window.open请求contoller的时候,直接从全局变量取就可以了。直接上图:

js中:

参数解释:imgDataUrl为base64编码的图片(超8000字符串),imgzc和imgzc2目的是将imgDataUrl存到contorller全局变量中,方便最后window.open方法用。

 

分析: 第一种方法传的参数如果太长,例如8000字符,就测不过去,网上说是服务器限制了,建议用第二种方法,本地验证较快。

 

 

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值