window.open (参数使用post方式提交)

13 篇文章 0 订阅
7 篇文章 0 订阅
一般
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>


[quote]
window.open以post方式提交
第一种方式
最近在做web项目,碰到需要跨页面传递参数的功能,就是那种需要把当前页面的内容带到新开的子窗体中,以前的做法是传一个id过去,然后在新窗口中去读数据库的内容。虽然不怎么麻烦,但是如果内容么有在数据库里保存,仅仅是处以拟稿状态时,就不能实现了,用户还常常认为是个bug。考虑采用get的方式传递,把需要的内容都序列化然后,通过url去传,显得很臃肿,而且get的传递内容长度有限制。于是就想到用post的方式传递,问题在于open方法不能设置请求方式,一般网页的post都是通过form来实现的。如果仅仅模拟form的提交方式,那么open方法里那种可设置窗体属性的参数又不能用。最后想办法整了这么一个两者结合的方式,将form的target设置成和open的name参数一样的值,通过浏览器自动识别实现了将内容post到新窗口中。
比较有意思的是直接通过调用form的submit方法不能触发onsubmit事件,查看了帮助文档,必须手动的触发,否则只能看到页面刷新而没有打开新窗口。代码中只传递了一个参数内容,实际可传递多个。
具体代码如下:

<script>

function openPostWindow(url, data, name)

{

var tempForm = document.createElement("form");

tempForm.id="tempForm1";

tempForm.method="post";

tempForm.action=url;

tempForm.target=name;



var hideInput = document.createElement("input");

hideInput.type="hidden";

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>


[/quote]


资料来源:
Window_Open详解
http://www.cnblogs.com/stswordman/archive/2006/06/02/415853.html
Window_Open详解
http://hi.baidu.com/iorichina/blog/item/5a2b323f20a901fc54e72386.html
window.open以post方式提交
http://yuxuguang.iteye.com/blog/895108
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值