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

本文介绍如何将window.open的GET请求转换为POST请求,以避免URL中暴露参数并突破GET参数数量限制。尝试使用Ajax传递json数据,但发现无法在后台直接进行页面跳转。最后,采用隐藏的form表单来实现POST参数传递,这种方法既不会暴露数据,又解决了页面跳转问题。提供了一个简单的JavaScript方法示例,用于在新窗口中打开页面并传递POST数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

window.open()的get更改为post传递参数

最近改了个公司的需求,要求把前端的单选框更改为多选框。改前端简单,但是之前的代码都是用的window.open()跳到控制层(controller),传递参数只能用get,不仅把数据暴露在url中,还会限制参数的数量。所以准备用别的。

我最先打算用Ajax定义一个数组,用json格式传给控制层。。。。Ajax果然好用,数据是传过去了,可控制层的return "xxx.html"却又不能跳转页面了。ajax只是局部刷新,所以不能在后台接口直接进行页面的跳转,只能在ajax的回调函数中进行页面的跳转。 在Ajax的success里加个跳转,可model封装的数据也过不去页面,那还不如window.open()呢。

baidu一下吧,居然可以用隐藏的form表单传递数据,还不会暴露数据,不过前端的东西看着就麻烦,再找找其他方法。。。。stackoverflow一下。靠。一样的方法。

那就用这个吧(没有平台歧视😁)。

代码如下

function openPostWindow(url, data, datas, target_type) {//参数列表,怎么写都行。主要要有url。
        var Datas = [];
        Datas = datas;
        var tempForm = $("<form>");
        tempForm.attr("id", "tempForm1");
        tempForm.attr("style", "display:none");
        tempForm.attr("target", target_type);
        tempForm.attr("method", "post");
        tempForm.attr("action", url);
        var input1 = $("<input>");
        input1.attr("type", "hidden");
        input1.attr("name", "全局变量");
        input1.attr("value", 全局变量);
        tempForm.append(input1);

        for (var key in Datas) {//传数组就用个循环
        	var a= $("<input>");
        	a.attr("type", "hidden");
        	a.attr("name", "a" + key);
        	a.attr("value", Datas[key].a);
        	tempForm.append(a);
        	var b= $("<input>");
        	b.attr("type", "hidden");
        	b.attr("name", "b" + key);
        	b.attr("value", Datas[key].b);
        	tempForm.append(b);
       		..........//用什么写什么
    	}
    	var input3 = $("<input>");
        input3.attr("type", "hidden");
        input3.attr("name", "data");
        input3.attr("value", data);
        tempForm.append(input3);
        tempForm.trigger("submit");
        //tempForm.submit();  --trigger("submit")和.submit()都可以
    };



openPostWindow("url", data, datas, "_black");

//哪里需要post传参就直接调这个方法就好了,_black新窗口打开,不写用默认的当前窗口打开应该也可以的,反正不需要看到这个表。这里data是数据,datas是数组型数据,也是随便写。

写得不够好,尽可能把自己遇到的问题写出来吧。写了一小段,你们肯定有更优雅的写法,欢迎指出问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值