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 相关文章推荐
自己动手手写jQuery插件总结
Jan 20 Javascript
jquery.uploadify插件在chrome浏览器频繁崩溃解决方法
Mar 01 Javascript
JavaScript模拟实现键盘打字效果
Jun 29 Javascript
gameboy网页闯关游戏(riddle webgame)--仿微信聊天的前端页面设计和难点
Feb 21 Javascript
jQuery实现拖拽页面元素并将其保存到cookie的方法
Jun 12 Javascript
JavaScript判断是否是微信浏览器
Jun 13 Javascript
遍历json获得数据的几种方法小结
Jan 21 Javascript
微信小程序 转发功能的实现
Aug 04 Javascript
详解小程序不同页面之间通讯的解决方案
Nov 23 Javascript
Vue 页面权限控制和登陆验证功能的实例代码
Jun 20 Javascript
Selenium执行Javascript脚本参数及返回值过程详解
Apr 01 Javascript
quickjs 封装 JavaScript 沙箱详情
Nov 02 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下将XML转换为数组
2010/01/01 PHP
PHP中return 和 exit 、break和contiue 区别与用法
2012/04/09 PHP
php中使用addslashes函数报错问题的解决方法
2013/02/06 PHP
php操作csv文件代码实例汇总
2014/09/22 PHP
php进行支付宝开发中return_url和notify_url的区别分析
2014/12/22 PHP
PHP反射API示例分享
2016/10/08 PHP
通过chrome浏览器控制台(Console)进行PHP Debug的方法
2016/10/19 PHP
Zend Framework过滤器Zend_Filter用法详解
2016/12/09 PHP
PHPMailer ThinkPHP实现自动发送邮件功能
2018/06/10 PHP
php 自定义函数实现将数据 以excel 表格形式导出示例
2019/11/13 PHP
基于jQuery实现网页进度显示插件
2015/03/04 Javascript
node.js下LDAP查询实例分享
2015/09/30 Javascript
jQuery中Datatables增加跳转到指定页功能
2017/02/08 Javascript
jQuery事件与动画基础详解
2017/02/23 Javascript
详解Vue 事件修饰符capture 的使用
2017/12/29 Javascript
JS实现获取进今年第几天是周几的方法分析
2018/06/27 Javascript
[05:09]2016国际邀请赛中国区预选赛淘汰赛首日精彩回顾
2016/06/29 DOTA
Django Form 实时从数据库中获取数据的操作方法
2019/07/25 Python
python处理excel绘制雷达图
2019/10/18 Python
浅析python中while循环和for循环
2019/11/19 Python
YUV转为jpg图像的实现
2019/12/09 Python
Anaconda+Pycharm环境下的PyTorch配置方法
2020/03/13 Python
基于python实现把json数据转换成Excel表格
2020/05/07 Python
Python实现加密接口测试方法步骤详解
2020/06/05 Python
python实现邮件循环自动发件功能
2020/09/11 Python
HTML5 本地存储和内容按需加载的思路和方法
2011/04/07 HTML / CSS
美国饼干礼物和美食甜点购买网站:Cheryl’s
2020/05/28 全球购物
家长写给老师的建议书
2014/03/13 职场文书
2014镇党委书记党建工作汇报材料
2014/11/02 职场文书
2015年中秋节活动总结
2015/03/23 职场文书
消防安全主题班会
2015/08/12 职场文书
情况说明书怎么写
2015/10/08 职场文书
银行岗位培训心得体会
2016/01/09 职场文书
如何让vue长列表快速加载
2021/03/29 Vue.js
golang正则之命名分组方式
2021/04/25 Golang
总结一些Java常用的加密算法
2021/06/11 Java/Android