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

在实际项目中,常常遇到这样的需求,即实现子系统页面之间跳转并在新的页面打开,我所在项目组使用的是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提交方式,还得另想它法。参考http://www.jb51.net/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)。这样基本满足需求了。

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

(0)

相关推荐

  • window.open以post方式将内容提交到新窗口

    第一种方式 最近在做web项目,碰到需要跨页面传递参数的功能,就是那种需要把当前页面的内容带到新开的子窗体中,以前的做法是传一个id过去,然后在新窗口中去读数据库的内容.虽然不怎么麻烦,但是如果内容么有在数据库里保存,仅仅是处以拟稿状态时,就不能实现了,用户还常常认为是个bug.考虑采用get的方式传递,把需要的内容都序列化然后,通过url去传,显得很臃肿,而且get的传递内容长度有限制.于是就想到用post的方式传递,问题在于open方法不能设置请求方式,一般网页的post都是通过form来实

  • window.open 以post方式传递参数示例代码

    复制代码 代码如下: //打开新页面并利用post方式传递参数 function openNewPageWithPostData(postAddress,opentype,paramNames,paramValues) { var newWindow = window.open(postAddress,opentype); if (!newWindow) { return false; } var postDataHtml="<html><head></head&g

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

    在实际项目中,常常遇到这样的需求,即实现子系统页面之间跳转并在新的页面打开,我所在项目组使用的是SSH框架,所以url均为类似****.action,同时还带有两参数(系统ID与系统名称),两个参数被struts拦截后存入session中,在打开的子系统页面中还有个ztree插件实现的树状菜单需要参数系统ID才能初始化,直接使用window.open(url,"_blank"),会使得url长度过长,同时还暴露一些参数.故想改用post方式提交,隐藏提交过程中参数的传递.首先想到aja

  • Ajax 给 XMLHttpReq.onreadystatechange传递参数

    Ajax 给 XMLHttpReq.onreadystatechange传递参数 通过: xmlhttp.onreadystatechange= function(){xx(123)}; or xmlhttp.onreadystatechange= new Function("xx(123)"); 就可以了. 复制代码 代码如下: Ajax 给 XMLHttpReq.onreadystatechange传递参数 通过: xmlhttp.onreadystatechange= funct

  • JSP页面中文传递参数使用escape编码

    今天在使用中文传递参数时,遇到死活编码转不过去,于是想到了用escape,在使用后 request.getParameter接收不到参数,于是想着怎么能够接收到参数. 经过试验,通过 复制代码 代码如下: zbtmp=escape(escape(zbtmp));//加密2次danielinbiti var params = "name="+zbtmp; window.open('showzsgraph.jsp?params); 然后可以通过request.getParameter获取到

  • JS控制静态页面传递参数并获取参数应用

    在项目中遇到这也一个问题: 有a.html和b.html. 1.a页面已经打开,b页面尚未打开,我希望在a页面设置好一些列参数,比如背景色,宽度等参数,传递给b页面,好让b页面在打开就能应用. 2.a页面已经打开,b页面无论是否打开.在a页面需要获取到b页面的一些元素甚至变量,以便于应用到a页面. 注意:不涉及跨域问题. 想了很久,终于想到了解决方案. 第一个问题,我们可以利用html页面锚点的特性,将参数通过url传递给b页面 这是a页面代码: <button>跳转设置</button

  • JS控制静态页面之间传递参数获取参数并应用的简单实例

    在项目中遇到这也一个问题: 有a.html和b.html. 1.a页面已经打开,b页面尚未打开,我希望在a页面设置好一些列参数,比如背景色,宽度等参数,传递给b页面,好让b页面在打开就能应用. 2.a页面已经打开,b页面无论是否打开.在a页面需要获取到b页面的一些元素甚至变量,以便于应用到a页面. 注意:不涉及跨域问题. 想了很久,终于想到了解决方案. 第一个问题,我们可以利用html页面锚点的特性,将参数通过url传递给b页面 这是a页面代码: <button>跳转设置</button

  • 关于javaScript注册click事件传递参数的不成功问题

    最近这半年作为一个java 程序员,我写的javaScript代码都快比java代码多了,前段时间是给某银行做一个柜员管控系统,在柜员授权这一块功能上,由于柜员的授权需要考虑各方面的因素,比如机构权限.柜员类型权限.岗位权限,业务权限等等,并且要对这些权限要做多次的交集或者并集处理,页面上不得不用许多的javascript来进行控制.造成了这一功能模块的实现上javaScript代码比java代码负责的情况. 而现在又要给某银行开发一个保管箱管理系统,其核心功能块保管箱座管理以及保管箱管理,为实

  • js获取html参数及向swf传递参数应用介绍

    我们知道HTML页面是在客户端执行的,这样要获取参数必须使用客户端脚本(如JavaScript),在这点上不同于服务器端脚本获取参数方式. 下面的这段js代码获取HTML网页形如"test.html?foo=mytest&program=flash" "?"后所有参数. 复制代码 代码如下: <script language=javascript> <!-- var hrefstr,pos,parastr; hrefstr = window

  • 使用自定义setTimeout和setInterval使之可以传递参数和对象参数

    /****************************************************** // // 功能: 修改window.setTimeout,使之可以传递参数和对象参数 // 使用方法: window.setTimeout(回调函数,延迟时间,参数1,参数n) // ******************************************************/ var mySetTimeOut = setTimeout; window.setTime

  • 微信小程序 navigator 跳转url传递参数

     微信小程序 navigator 跳转url传递参数 使用方法说明 (1)传值:在navigator的属性url后拼接?id(参数名字)=要传递的值 (如果多个参数用&分开 &name=value&--.) (2)取值:options 是包含url地址中参数的对象,可以直接 点 获取. 扩展 JS获取web页面地址栏中的参数. https://www.google.co.jp/webhp?sourceid=chrome-instant&ion=1&espv=2&am

随机推荐