一般
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>
引用
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>
资料来源:
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
分享到:
相关推荐
使用window.open()方法发送post请求
1. 使用`window.open`打开的新窗口中设置一个`window.opener`属性,这样新窗口可以与打开它的窗口进行通信。 2. 在新窗口中处理用户交互后,使用`window.close`关闭窗口,并在关闭前将结果通过`window.opener`通知原...
在JavaScript中,`window.location` 和 `window.open` 都是用来控制浏览器导航的重要API,但它们在使用场景、功能特性和行为上有显著的不同。了解这些差异对于合理地利用这两种方法至关重要。 #### 二、window....
1. **使用URL参数**:在`window.open`的`url`中添加查询参数来传递数据。例如: ```javascript var url = "child.html?data=" + encodeURIComponent(value); var newWindow = window.open(url, "child"); ``` 2...
本文将详细介绍如何使用`window.open`以POST方式传递参数,并提供一个示例代码。 首先,理解`window.open`的基本用法。它接受两个主要参数:`url`和`name`,以及可选的`features`参数,用于定义新窗口的特性。例如...
根据实际的开发项目整理的一个window的open方法把get请求转成post请求处理方式逻辑,由于window.open方法的get实现时,请求传入的参数长度不能超过2000这样一个字符长度,故需转换成post请求处理方式达到既能用到...
然而,当需要通过POST方式传递参数时,`window.open()` 默认的GET方式就无法满足需求了。 在上述描述中,提到的问题是在SSH框架下,URL长度受限且需要隐藏某些参数,因此需要寻找一种方式来通过POST传递参数。一种...
在JavaScript的世界里,`window.open`、`iframe`和`dialog`是三个非常重要的概念,它们在网页交互和页面通信中扮演着关键角色。这里我们将深入探讨这些知识点,并结合实例来帮助你理解它们的用法。 1. `window.open...
第一种方式 最近在做web项目,碰到需要跨页面传递参数的功能,就是那种需要把当前页面的内容带到新开的子窗体中,以前的...如果仅仅模拟form的提交方式,那么open方法里那种可设置窗体属性的参数又不能用。最后想办法
- 使用`window.open`时,数据交互需要通过其他方式实现,如使用`postMessage`API。 综上所述,`showModalDialog`和`window.open`各有优势和局限性,开发者应根据具体需求选择合适的方法。在现代Web开发中,由于`...
此外,如果刷新父页面不是必要的,或者因为某些原因不能使用 `window.opener.location.reload()`,还可以考虑使用其他通信方式,例如: 1. **使用`postMessage`和`message`事件**:这是 HTML5 引入的一种跨文档消息...
现在我们来深入探讨`window.open()` 的使用及其与父窗口通信的相关知识点。 首先,`window.open()` 函数的基本语法如下: ```javascript window.open(url, name, features); ``` - `url`: 这是新窗口要加载的页面...
在网页开发中,有时会遇到使用`window.open`方法创建新窗口被浏览器拦截的问题,这主要是因为浏览器的安全策略。浏览器为了防止恶意脚本无休止地弹出窗口,会对非用户交互触发的`window.open`调用进行拦截。本文将...
window.postMessage的功能是允许程序员跨域在两个窗口/frames间发送数据信息。基本上,它就像是跨域的AJAX,但不是浏览器跟服务器之间交互,而是在两个客户端之间通信。让我们来看一下window.postMessage是如何工作...
在这个 `openPostWindow` 函数中,创建了一个临时的隐藏表单,并设置了其提交方式为 POST,这样可以在后台向指定的 `url` 发送数据。`target` 参数决定了提交的结果会在哪个窗口或标签页显示。当 `target` 为 "_...
1. **跨窗口通信**:当一个页面打开另一个页面(如新窗口、`window.open`或`window.navigate`),它们可以通过`postMessage`通信。 2. **跨`iframe`通信**:父页面与`iframe`或多个`iframe`之间的通信,特别是当`...
初始化请求是通过`open()`方法实现的,它接受三个参数:请求类型(如"GET"或"POST"),URL,以及一个布尔值表示是否异步执行。 ```javascript xhr.open('GET', 'http://example.com/data', true); ``` **二、设置...