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 调试利器 Firebug使用详解六
Jul 05 Javascript
JavaScript 继承详解(三)
Jul 13 Javascript
jquery radio 操作代码
Mar 16 Javascript
让人蛋疼的JavaScript语法特性
Sep 30 Javascript
JS实现简单路由器功能的方法
May 27 Javascript
JavaScript实现点击单选按钮改变输入框中文本域内容的方法
Aug 12 Javascript
微信小程序 弹幕功能简单实例
Feb 14 Javascript
使用jquery datatable和bootsrap创建表格实例代码
Mar 17 Javascript
JavaScript严格模式下关于this的几种指向详解
Jul 12 Javascript
利用jQuery异步上传文件的插件用法详解
Jul 19 jQuery
JavaScript+CSS相册特效实例代码
Sep 07 Javascript
VUE v-model表单数据双向绑定完整示例
Jan 21 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 iconv函数的使用详解
2013/06/09 PHP
教你如何快捷的使用cmd访问mysql小技巧
2014/05/26 PHP
浅谈php扩展imagick
2014/06/02 PHP
javascript显示选择目录对话框的代码
2008/11/10 Javascript
JQuery里面的几种选择器 查找满足条件的元素$("#控件ID")
2011/08/23 Javascript
javascript (用setTimeout而非setInterval)
2011/12/28 Javascript
学习JavaScript设计模式(继承)
2015/11/26 Javascript
jQuery实现下拉加载功能实例代码
2016/04/01 Javascript
JavaScript数组的定义及数字操作技巧
2016/06/06 Javascript
Bootstrap弹出带合法性检查的登录框实例代码【推荐】
2016/06/23 Javascript
BootstrapTable+KnockoutJS自定义T4模板快速生成增删改查页面
2016/08/01 Javascript
js中利用cookie实现记住密码功能
2020/08/20 Javascript
jQuery中Nicescroll滚动条插件的用法
2016/11/10 Javascript
jQuery实现链接的title快速出现的方法
2017/02/20 Javascript
Vue.Js中的$watch()方法总结
2017/03/23 Javascript
微信JSSDK调用微信扫一扫功能的方法
2017/07/25 Javascript
vue使用keep-alive保持滚动条位置的实现方法
2019/04/09 Javascript
微信小程序class封装http代码实例
2019/08/24 Javascript
微信小程序如何获取地址
2019/12/24 Javascript
Vue动态加载图片在跨域时无法显示的问题及解决方法
2020/03/10 Javascript
vue模块移动组件的实现示例
2020/05/20 Javascript
[03:11]2014DOTA2国际邀请赛-VG掉入败者组 独家专访357
2014/07/19 DOTA
tensorflow1.0学习之模型的保存与恢复(Saver)
2018/04/23 Python
基于pip install django失败时的解决方法
2018/06/12 Python
python 判断参数为Nonetype类型或空的实例
2018/10/30 Python
Python + Requests + Unittest接口自动化测试实例分析
2019/12/12 Python
python 实现超级玛丽游戏
2020/11/25 Python
Keras保存模型并载入模型继续训练的实现
2021/02/20 Python
CSS3制作炫酷的下拉菜单及弹起式选单的实例分享
2016/05/17 HTML / CSS
英国DVD和蓝光碟片购买网站:Zoom.co.uk(电影和电视)
2019/09/23 全球购物
JDK安装目录下有哪些内容
2014/08/25 面试题
篮球比赛策划方案
2014/06/05 职场文书
幼儿园推普周活动总结
2015/05/07 职场文书
2016年小学生清明节广播稿
2015/12/17 职场文书
前端学习——JavaScript原生实现购物车案例
2021/03/31 Javascript
Mysql数据库事务的脏读幻读及不可重复读详解
2022/05/30 MySQL