window.open()提交POST数据
window.open(URL,name,specs,replace) > Details
我们一般都是通过window.open(url, name, specs)以GET方式让浏览器打开一个新的页签,如果需要传递参数,就追加在url后面,如 http://demo/?a=1&b=2
问题思考
1)后面的参数如果太长该怎么办,浏览器对url长度是有限制的;
2)涉及到一些敏感数据,不想直接暴露出来;
解决方案
用POST方式来提交数据,但是window.open只允许我们用GET方式来打开页面。好,思路如下:
借用表单来提交数据,首先用window.open()来创建一个空的页面,然后动态创建一个表单,将要传递的数据,填充到这个表单中,把这个表单插入到这个空页面中,最后自动提交表单,跳转到我们指定的页面。
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;
}
兼容性问题
var newWin = window.open();
将一段HTML代码,插入到一个页面中有三种方法:
1)document.body.appendChild(yourCode)
2 ) document.body.innerHTML = yourCode
3 ) document.write(yourCode)
使用newWin.doucment.body.appendChild(formElm )方法将表单元素插入到空页面,IE8下会报错Error:不支持此方法接口 ,而其它浏览器正常,因此选择另外两种方法了。
另外一种方式是,在window.open()的页面内,通过window.opener的方式与父页面进行数据通信。
window.open()提交POST数据的更多相关文章
- $.post()提交了数据,return不给跳转
本来Controller接到普通请求,return “somePage”,这样就跳转了.前台用$.post()提交了数据(不需要回调),我了个大草,return那里就不给跳转了这样怎么解决? ajax ...
- Yii 开发微信 '您提交的数据无法被验证'
使用Yii开发微信时,出现 [error][yii\web\HttpException:] exception 'yii\web\BadRequestHttpException' with messa ...
- 模拟提交API数据Pyqt版
其实这个模拟提交数据之前已经写过篇: Python requests模拟登录 因为现在在做的项目中需要一个debug请求调试API,用PHP的CURL写了一个,又因Pyqt更能直观灵活的显示请求的参数 ...
- 解决Yii2 启用_csrf验证后POST数据仍提示“您提交的数据无法验证”
一 CSRF 概念 CSRF(Cross-site request forgery跨站请求伪造,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XS ...
- asp.net 一次性提交大量数据,服务器会报错,要在 web.config 中设置一下
web.config <?xml version="1.0" encoding="utf-8"?> <!-- 有关如何配置 ASP.NET 应 ...
- ngResource提交json数据如何带参数
ngResource提交json数据如何带参数 直接使用ngResource和REST服务接口交互可以让程序显得简洁,前提是配置好跨域和OPTIONS请求的支持,与此同时,如果需要带些额外的参数,有两 ...
- HttpWebRequest提交(Post)数据
protected void Page_Load(object sender, EventArgs e) { string sql = "select top 1 * from [user] ...
- SQL Server 利用批量(batchsize)提交加快数据生成/导入
在最小化日志操作解析,应用的文章中有朋友反映生成测试数据较慢.在此跟大家分享一个简单的应用,在生成数据过程中采用批量提交的方式以加快数据导入. 此应用不光生成测试数据上,在BCP导入数据中,复制初始化 ...
- Http协议详解,获取doPost,doGet提交的数据,以及编码问题
一 什么是Http协议 http协议: 浏览器客户端 和 服务器端 之间数据传输的格式规范 二 如何查看Http协议的内容 1)使用火狐的firebug插件(右键->firebug->网 ...
随机推荐
- 《精通CSS:高级Web标准解决方案》学习笔记(下)
1. background-position: left center; 两个参数分别是x和y轴方向的position 2. background-position: 10% 20%; 用百分数表示时 ...
- BFS 10.1.5.253 1502
http://10.1.5.253/acmhome/problemdetail.do?&method=showdetail&id=1502 //1502 #include <st ...
- javax.el.PropertyNotFoundException错误
在J2EE项目的开发过程中,遇到了这个问题,报错如下: 错误原因为在我model里的Person类里定义了一个Name属性,但是读取属性的getter方法的,一般按照属性首字母小写来处理,所以把Nam ...
- UITableView调优
UITableView的优化主要从三个方面入手: 提前计算并缓存好高度(布局),因为heightForRowAtIndexPath:是调用最频繁的方法: 异步绘制,遇到复杂界面,遇到性能瓶颈时,可能就 ...
- Servlet的一些细节(2)
1. Servlet的创建时间 Servlet是不能单独运行,调用它的叫做Servlet引擎,或者叫做web服务器 针对客户端的多长Servlet请求,通常情况下,服务器只会创建一个Servlet实例 ...
- Web —— tomcat 问题解决
1.在Eclipse 上部署到Tomcat,使用mybatis 访问数据库,junit测试访问正常,Tomcat运行时报错: java.lang.NoClassDefFoundError: org/a ...
- [Angualr 2] Using FormBuilder
There are two main functions we’ll use on FormBuilder: • control - creates a new Control• group - cr ...
- 再回首,Java温故知新——开篇说明
不知不觉在IT界从业2年了,两年时间足够一个人成长很多,当然也会改变很多事.在这两年时间里,随着对技术的深入了解,知识面的拓展以及工作难度的增大,渐渐的感觉自己技术方面根基不稳,多数问题也只是做到知其 ...
- Java 日志缓存机制的实现--转载
概述 日志技术为产品的质量和服务提供了重要的支撑.JDK 在 1.4 版本以后加入了日志机制,为 Java 开发人员提供了便利.但这种日志机制是基于静态日志级别的,也就是在程序运行前就需设定下来要打印 ...
- php模拟HTTP协议发送post请求方法
今天用到php模拟http发送post请求记录 代码如下: <?php $url = 'xxxx.com'; $data = 'a=one&b=two'; $data = urlenco ...