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 相关文章推荐
利用WebBrowser彻底解决Web打印问题(包括后台打印)
Jun 22 Javascript
JS 的应用开发初探(mootools)
Dec 19 Javascript
javascript函数以及基础写法100多条实用整理
Jan 13 Javascript
基于jquery实现表格无刷新分页
Jan 07 Javascript
Vue.js路由vue-router使用方法详解
Mar 20 Javascript
js图片加载效果实例代码(延迟加载+瀑布流加载)
May 12 Javascript
JavaScript实现的可变动态数字键盘控件方式实例代码
Jul 15 Javascript
微信小程序progress组件使用详解
Jan 31 Javascript
vue.js中created方法作用
Mar 30 Javascript
webpack+vue-cil 中proxyTable配置接口地址代理操作
Jul 18 Javascript
vue:el-input输入时限制输入的类型操作
Aug 05 Javascript
vue动画—通过钩子函数实现半场动画操作
Aug 09 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入门的学习方法
2007/01/02 PHP
PHP实时显示输出
2008/10/02 PHP
php cookie 登录验证示例代码
2009/03/16 PHP
php使用百度ping服务代码实例
2014/06/19 PHP
php插入排序法实现数组排序实例
2015/02/16 PHP
关于Laravel参数验证的一些疑与惑
2019/11/19 PHP
tp5框架使用cookie加密算法实现登录功能示例
2020/02/10 PHP
js闭包实例汇总
2014/11/09 Javascript
jQuery实现的淡入淡出二级菜单效果代码
2015/09/15 Javascript
JS实现的仿淘宝交易倒计时效果
2015/11/27 Javascript
js es6系列教程 - 基于new.target属性与es5改造es6的类语法
2017/09/02 Javascript
关于vue-router的那些事儿
2018/05/23 Javascript
Vue过滤器,生命周期函数和vue-resource简单介绍
2021/01/12 Vue.js
基于asyncio 异步协程框架实现收集B站直播弹幕
2016/09/11 Python
对python字典过滤条件的实例详解
2019/01/22 Python
Python 给屏幕打印信息加上颜色的实现方法
2019/04/24 Python
python 命名规范知识点汇总
2020/02/14 Python
Python逐行读取文件内容的方法总结
2020/02/14 Python
Python多进程multiprocessing、进程池用法实例分析
2020/03/24 Python
Python通过Pillow实现图片对比
2020/04/29 Python
matlab、python中矩阵的互相导入导出方式
2020/06/01 Python
python解压zip包中文乱码解决方法
2020/11/27 Python
使用HTML5的Canvas绘制曲线的简单方法
2015/09/08 HTML / CSS
波兰购物网站:MALL.PL
2019/05/01 全球购物
运动会获奖感言
2014/02/11 职场文书
乡镇信息公开实施方案
2014/03/23 职场文书
关于晚自习早退的检讨书
2014/09/13 职场文书
设备收款委托书范本
2014/10/02 职场文书
追悼会答谢词
2015/01/05 职场文书
小学语文复习计划
2015/01/19 职场文书
就业推荐表自我评价范文
2015/03/02 职场文书
小学班级管理心得体会
2016/01/07 职场文书
幼儿园大班教师评语
2019/06/21 职场文书
如何设计高效合理的MySQL查询语句
2021/05/26 MySQL
详解OpenCV曝光融合
2022/04/29 Python
html中两种获取标签内的值的方法
2022/06/16 jQuery