window.open()实现post传递参数


Posted in Javascript onMarch 12, 2015

在实际项目中,常常遇到这样的需求,即实现子系统页面之间跳转并在新的页面打开,我所在项目组使用的是SSH框架,所以url均为类似****.action,同时还带有两参数(系统ID与系统名称),两个参数被struts拦截后存入session中,在打开的子系统页面中还有个ztree插件实现的树状菜单需要参数系统ID才能初始化,直接使用window.open(url,"_blank"),会使得url长度过长,同时还暴露一些参数。故想改用post方式提交,隐藏提交过程中参数的传递。首先想到ajax提交,但是两个参数的传递会存在问题,ajax提交与window.open()会使得action走两遍,因此舍去。后又重新认真看了window.open()的API,链接地址http://www.w3school.com.cn/jsref/met_win_open.asp。window.open()默认是get提交方式,想要实现post提交方式,还得另想它法。参考https://3water.com/article/32826.htm,这里介绍了一种方法。也是常被采用的方法。我根据实际情况略作修改:

function openPostWindow(url, name, data1, data2){

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

    tempForm.id = "tempForm1";

    tempForm.method = "post";

    tempForm.action = url;

    tempForm.target=name;

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

    hideInput1.type = "hidden";

    hideInput1.name="xtid";

    hideInput1.value = data1;

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

    hideInput2.type = "hidden";

    hideInput2.name="xtmc";

    hideInput2.value = data2;

    tempForm.appendChild(hideInput1);

    tempForm.appendChild(hideInput2);

    if(document.all){

        tempForm.attachEvent("onsubmit",function(){});        //IE

    }else{

        var subObj = tempForm.addEventListener("submit",function(){},false);    //firefox

    }

    document.body.appendChild(tempForm);

    if(document.all){

        tempForm.fireEvent("onsubmit");

    }else{

        tempForm.dispatchEvent(new Event("submit"));

    }

    tempForm.submit();

    document.body.removeChild(tempForm);

}

//function openWindow(name){

//    window.open("",name);

//}

 openPostWindow()函数中的参数个数根据实际需要自行修改。data1与data2为action需要传递的参数。此外,此处还需考虑Javascript事件浏览器兼容问题。我这里注释了function openWindow(),不然会多打开一个空白页面(about:blank)。这样基本满足需求了。

以上就是本文分享的全部内容了,希望大家能够喜欢。

Javascript 相关文章推荐
用Javascript评估用户输入密码的强度实现代码
Nov 30 Javascript
Moment.js 不容错过的超棒Javascript日期处理类库
Apr 15 Javascript
js实现文本框中焦点在最后位置
Mar 04 Javascript
jQuery动态效果显示人物结构关系图的方法
May 07 Javascript
JavaScript使用addEventListener添加事件监听用法实例
Jun 01 Javascript
jquery网页日历显示控件calendar3.1使用详解
Nov 24 Javascript
Javascript基于jQuery UI实现选中区域拖拽效果
Nov 25 Javascript
vue.js删除动态绑定的radio的指定项
Jun 02 Javascript
vue router使用query和params传参的使用和区别
Nov 13 Javascript
详解Node.js中的Async和Await函数
Feb 22 Javascript
基于vue,vue-router, vuex及addRoutes进行权限控制问题
May 02 Javascript
vue通过滚动行为实现从列表到详情,返回列表原位置的方法
Aug 31 Javascript
js运动动画的八个知识点
Mar 12 #Javascript
js实现最短的XML格式化工具实例
Mar 12 #Javascript
微信中一些常用的js方法汇总
Mar 12 #Javascript
javascript实现checkBox的全选,反选与赋值
Mar 12 #Javascript
jQuery通过扩展实现抖动效果的方法
Mar 11 #Javascript
jQuery实现字符串按指定长度加入特定内容的方法
Mar 11 #Javascript
jquery利用命名空间移除绑定事件的方法
Mar 11 #Javascript
You might like
如何在PHP中使用Oracle数据库(5)
2006/10/09 PHP
php实现memcache缓存示例讲解
2013/12/04 PHP
Yii CFileCache 获取不到值的原因分析
2017/02/08 PHP
PHP CURL实现模拟登陆并上传文件操作示例
2020/01/02 PHP
jQuery(1.3.2) 7行代码搞定跟随屏幕滚动的层
2009/05/21 Javascript
一个很酷的拖动层的js类,兼容IE及Firefox
2009/06/23 Javascript
基于jquery的商品展示放大镜
2010/08/07 Javascript
对setInterval在火狐和chrome切换标签产生奇怪的效果之探索,与解决方案!
2011/10/29 Javascript
JavaScript计算字符串中每个字符出现次数的小例子
2013/07/02 Javascript
获得Javascript对象属性个数的示例代码
2013/11/21 Javascript
JavaScript中使用document.write向页面输出内容实例
2014/10/16 Javascript
javascript手工制作悬浮菜单
2015/02/12 Javascript
javascript this详细介绍
2016/09/19 Javascript
微信小程序开发图片拖拽实例详解
2017/05/05 Javascript
微信小程序使用toast消息对话框提示用户忘记输入用户名或密码功能【附源码下载】
2017/12/09 Javascript
ES6入门教程之let、const的使用方法
2019/04/13 Javascript
js module大战
2019/04/19 Javascript
vue项目中引入vue-datepicker插件的详解
2019/05/14 Javascript
详解python之多进程和进程池(Processing库)
2017/06/09 Python
Python单体模式的几种常见实现方法详解
2017/07/28 Python
python socket通信编程实现文件上传代码实例
2019/12/14 Python
Python爬虫爬取煎蛋网图片代码实例
2019/12/16 Python
python matplotlib中的subplot函数使用详解
2020/01/19 Python
python从Oracle读取数据生成图表
2020/10/14 Python
美国排名第一的在线葡萄酒商店:Wine.com
2016/09/07 全球购物
速比涛英国官网:Speedo英国
2019/07/15 全球购物
Ever New美国:澳大利亚领先的女装时尚品牌
2019/11/28 全球购物
艺术应用与设计个人的自我评价
2013/11/23 职场文书
水利学院求职自荐书
2014/02/01 职场文书
支部鉴定材料
2014/06/02 职场文书
关于保护环境的标语
2014/06/09 职场文书
答辩状格式范本
2015/05/22 职场文书
事业单位岗位说明书
2015/10/08 职场文书
Python中快速掌握Data Frame的常用操作
2021/03/31 Python
SONY AN-LP1 短波有源天线放大器
2021/04/22 无线电
javascript canvas实现雨滴效果
2021/06/09 Javascript