window.open以post方式提交

转自:http://aguu125.iteye.com/blog/1545737

一般
window.open 传参数都是用Get..方式..在url后面拼接参数...
有时候并不适用,如:
1)不想被看到参数信息
2)参数过长,get有限制会被截断
3)可能有中文编码问题
所以需要用post方式

方式一:

function submitForm(){   
  window.open('','newWin','width=400,height=500,scrollbars=yes');   
  form对象.submit();   
}   
<FORM name=form action="YourActionFile.html" method="post" target="newWin">   
  ...
</Form> 

也可

function openWindowWithPost(url,name,keys,values)  
{  
    var newWindow = window.open(url, name);  
    if (!newWindow)  
        return false;  
          
    var html = "";  
    html += "<html><head></head><body><form id='formid' method='post' action='" + url + "'>";  
    if (keys && values)  
    {  
       html += "<input type='hidden' name='" + keys + "' value='" + values + "'/>";  
    }  
      
    html += "</form><script type='text/javascript'>document.getElementById('formid').submit();";  
    html += "<\/script></body></html>".toString().replace(/^.+?\*|\\(?=\/)|\*.+?$/gi, "");   
    newWindow.document.write(html);  
      
    return newWindow;  
}  


方式二:

<script>   
  
function openPostWindow(url, data, name)     
  
  {     
  
     var tempForm = document.createElement("form");     
  
     tempForm.id="tempForm1";     
  
     tempForm.method="post";     
  	 
  	 //url
     tempForm.action=url;     
     //open方法不能设置请求方式,一般网页的post都是通过form来实现的。
     //如果仅仅模拟form的提交方式,那么open方法里那种可设置窗体属性的参数又不能用。
     //最后想办法整了这么一个两者结合的方式,将form的target设置成和open的name参数一样的值,通过浏览器自动识别实现了将内容post到新窗口中
     tempForm.target=name;     
  
     
  
     var hideInput = document.createElement("input");     
  
     hideInput.type="hidden";     
  
     //传入参数名,相当于get请求中的content=
     hideInput.name= "content";
  
     //传入传入数据,只传递了一个参数内容,实际可传递多个。
     hideInput.value= data;   
  
     tempForm.appendChild(hideInput);      
  
     tempForm.attachEvent("onsubmit",function(){ openWindow(name); });   
  
     document.body.appendChild(tempForm);     
  
  
  
     tempForm.fireEvent("onsubmit");   
  
     //必须手动的触发,否则只能看到页面刷新而没有打开新窗口
     tempForm.submit();   
  
     document.body.removeChild(tempForm);   
  
}   
  
  
  
function openWindow(name)     
  
{     
  
     window.open('about:blank',name,'height=400, width=400, top=0, left=0, toolbar=yes, menubar=yes, scrollbars=yes, resizable=yes,location=yes, status=yes');      
  
}     
  
</script>  


推荐使用第二种方式,第一种方式有时候有问题

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值