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 相关文章推荐
用js实现的检测浏览器和系统的函数
Apr 09 Javascript
javascript预览上传图片发现的问题的解决方法
Nov 25 Javascript
JS Range HTML文档/文字内容选中、库及应用介绍
May 12 Javascript
12种不宜使用的Javascript语法整理
Nov 04 Javascript
JavaScript中的object转换函数toString()与valueOf()介绍
Dec 31 Javascript
jquery实现点击弹出带标题栏的弹出层(从右上角飞入)效果
Sep 19 Javascript
jQuery实现简单的点赞效果
May 29 Javascript
详解win7 cmd执行vue不是内部命令的解决方法
Jul 27 Javascript
jQuery Dom元素操作技巧
Feb 04 jQuery
Vue中的字符串模板的使用
May 17 Javascript
详解微信小程序input标签正则初体验
Aug 18 Javascript
优雅的使用javascript递归画一棵结构树示例代码
Sep 22 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
Ha0k 0.3 PHP 网页木马修改版
2009/10/11 PHP
PHP截断标题且兼容utf8和gb2312编码
2013/09/22 PHP
php转换颜色为其反色的方法
2015/04/27 PHP
爆炸式的JS圆形浮动菜单特效代码
2010/03/03 Javascript
JavaScript学习点滴 call、apply的区别
2010/10/22 Javascript
JS图片无缝、平滑滚动代码
2014/03/11 Javascript
JS使用replace()方法和正则表达式进行字符串的搜索与替换实例
2014/04/10 Javascript
jquery动态增加删减表格行特效
2015/11/20 Javascript
jQuery通过写入cookie实现更换网页背景的方法
2016/04/15 Javascript
AngularJS入门教程之AngularJS指令
2016/04/18 Javascript
用JS写的一个Ajax库(实例代码)
2016/08/06 Javascript
Web前端开发之水印、图片验证码
2016/11/27 Javascript
jQuery特殊符号转义的实现
2016/11/30 Javascript
Javascript之深入浅出prototype
2017/02/06 Javascript
vue组件之Alert的实现代码
2017/10/17 Javascript
JS正则表达式常见用法实例详解
2018/06/19 Javascript
深入解读Node.js中的koa源码
2019/06/17 Javascript
jQuery实现视频展示效果
2020/05/30 jQuery
javascript实现简单页面倒计时
2021/03/02 Javascript
[02:08]2014DOTA2国际邀请赛 430专访:力争取得小组前二
2014/07/11 DOTA
Python中super函数用法实例分析
2019/03/18 Python
PyQt5基本控件使用之消息弹出、用户输入、文件对话框的使用方法
2019/08/06 Python
Python操作列表常用方法实例小结【创建、遍历、统计、切片等】
2019/10/25 Python
python文件及目录操作代码汇总
2020/07/08 Python
利用Python函数实现一个万历表完整示例
2021/01/23 Python
前端面试必备之CSS3的新特性
2017/09/05 HTML / CSS
CSS3 please 跨浏览器的CSS3产生器
2010/03/14 HTML / CSS
一款利用纯css3实现的超炫3D表单的实例教程
2014/12/01 HTML / CSS
Traffic People官网:女式花裙、上衣和连身裤
2020/10/12 全球购物
办理居住证介绍信
2014/01/15 职场文书
社区工作感言
2014/02/21 职场文书
公司合作意向书
2014/04/01 职场文书
统计专业自荐书
2014/07/06 职场文书
食品安全汇报材料
2014/08/18 职场文书
创业项目大全(适合在家创业的项目)
2019/08/15 职场文书
教你用python控制安卓手机
2021/05/13 Python