今天在写项目的时候遇到关于 windows.open(...) 方法的一个问题, 具体问题如下:
项目需求为在: A 页面上当选中页面上的一条数据后, 点击 '按钮' 然后跳转到一个新的页面 B 上, B 页面在根据 A 页面上选中的数据进行处理.
在开发中遇到一个问题, 那就是前端框架 miniui 没有直接跳转页面类似于 windows.open(...) 的方法, 无奈, 只有用
windows.open(...) 方法跳转, 但是该方法默认的是 GET 请求, 也就是说只能在 url 后面加上 ?a=133&&b=456 之类的, 这样不仅数据不安全而且当数据过长过大的时候, 使用该方法就会受到限制, 那么怎么样才能让其变为 POST 请求呢? 答案是有的, 具体请看下图代码:
- function openPostWindow(url, name, data1){//url 为请求地址, name 为 form 表单的 target 的 name 可以随意写 data1 为需要请求的数据
- var tempForm = document.createElement("form");// 创建 form 表单, 以下数 form 表单的各种参数
- tempForm.id = "tempForm1";
- tempForm.method = "post";
- tempForm.action = url;
- tempForm.target=name;
- var hideInput1 = document.createElement("input");// 创建标签 <input></input> 标签 然后设定属性, 最后追加为 form 标签的子标签
- hideInput1.type = "hidden";
- hideInput1.name="data";
- hideInput1.value = data1;
- tempForm.appendChild(hideInput1);
- 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();// 提交 POST 请求
- document.body.removeChild(tempForm);// 删除整个 form 标签
- }
方法写好了, 直接在 '按钮' 下面的 onclick 相关的方法下调用上面的方法, 并传递参数就 ok 了;
openPostWindow(tmpPath+"/Rwbc/toRwbcResult","rwbc",JSON.stringify(list));
来源: https://www.2cto.com/kf/201806/755918.html