当前位置: 首页 > news >正文

若依系统弹窗父子页面传参数

在这里插入图片描述

举例导入功能,
1.父页面打开子页面将excel导入后台解析,
2.后台解析将数据从子页面返回给父页面.
3.父页面加载子页面的解析的数据.

直接上代码

父页面

父页面设置一个函数 ,然后用来接受参数.dat 就是接受的参数 后面的都是业务代码(不用看,记住函数名就行
getDataFromSon)

   // 获取第二个子页面传来的值并修改
        function getDataFromSon(dat) {
            console.log("父页面收到的数据")
            console.log(dat)
            // 最后需要调用location.reload()才能更新内容
            // 选中表格中除第一行外的所有 tr 元素并删除
            $('#mTable tr:gt(0)').remove();

            //遍历添加
            for (let i = 0; i < dat.length; i++) {
                let da = dat[i];
                console.log("添加内容")
                console.log(da)

                var trHtml="<tr>\n" +
                    "                            <td><input   style=\"width: 100%;\" name=\"name\" value='" + da.goodname + "'    required ></td>\n" +
                    "                            <td><input   style=\"width: 100%;\" name=\"num\" value='" + da.num + "'      required ></td>\n" +
                    "                            <td><input   style=\"width: 100%;\" name=\"guige\" value='" + da.guige + "'  required ></td>\n" +
                    "                            <td><input   style=\"width: 100%;\" name=\"beizhu\" value='" + da.beizhu + "'   required  ></td>\n" +
                    "                        </tr>";


                $("#mTable").append(trHtml);
            }
           // location.reload()
        }

父页面的打开弹窗代码,就是打开子页面(上传文件的页面)

 function importExcels(){
            $.modal.open('导入数据',ctx + "business/buy"  + "/uploadjiexi", '770', '560');
        }

子页面

这是导入excel表格之后的一个提交校验函数.重点看回调函数,function(response,layero) ,就是提交之后将后台数据传输给父页面.根据你的需要可改成 关闭子页面时/监听是否勾选函数等等,触发传输数据到父页面 ,自己根据业务场景修改即可

function submitHandler() {
        if ($.validate.form()) {
            $.operate.save( "/business/buy/uploadjiexi", $('#form-outhis-add').serialize(),function(response,layero) {
               console.log("开始回调")
               console.log(response.data)
                datass=response.data;
               console.log(response)
                if (response.code === 0) { // 假设成功状态码为200
                    //判断是否存在window对象
                    if( parent.window){
                        console.log("存在")
                        console.log(parent.window)
                        console.log(parent.layer)
                    }else {
                        console.log("不存在")
                    }
                    //遍历寻找窗口
                    var paretindex;
                    var ws=window.parent;
                    for (let i = 0; i < ws.length; i++) {
                        let windowObj = ws[i];
                       if(windowObj.location.pathname == '/business/buy/add'){
                           paretindex=i;
                       }
                    }
                    //判断索引是否找到
                    if (paretindex.length == 0){
                        $.modal.alertError("解析失败!!请刷新页面重新解析!");
                        return;
                    }

                    console.log('/business/buy/add索引为:'+paretindex);
                    //根据索引执行父页面方法
                    window.parent[paretindex].getDataFromSon(datass);

                    // window.parent.getDataFromSon(data); //这是第一个子页面函数,代码在后面
                    //关闭子页面
                    /*var index = parent.layer.getFrameIndex(window.name);
                    console.log(index)
                    parent.layer.close(index);*/


                } else {
                    console.log("不等于200")
                    $.modal.alertError("上传失败:" + response.msg);
                }
            });
        }
    }

重点分析回调函数

//定义变量存储后台结果
var datass;

function(response,layero) {
		//1.
               console.log("开始回调")
               //获取后台返回的结果
               console.log(response.data)
               //赋值给变量
                datass=response.data;
		//2.
                if (response.code === 0) { // 假设成功状态码为0
                    //判断是否存在parent.window对象
                    if( parent.window){
                        console.log("存在")
                        //输出看下 父窗口是数组(存在嵌套)还是单个
                        console.log(parent.window)
                   
                    }else {
                        console.log("不存在")
                    }
		//3.        
                    //遍历寻找窗口 我的是嵌套所以遍历找下我的add页面也就是我的父窗口
                    var paretindex;
                    var ws=window.parent;
                    for (let i = 0; i < ws.length; i++) {
                        let windowObj = ws[i];
 //根据属性查找我的父窗口 并记录父窗口的索引,不会找就看前端console面板找属性,window.location.pathname
                       if(windowObj.location.pathname == '/business/buy/add'){
                           paretindex=i;
                       }
                    }      
                    //判断索引是否找到
                    if (paretindex.length == 0){
                        $.modal.alertError("解析失败!!请刷新页面重新解析!");
                        return;
                    }
		//4.**********找到父索引 然后执行父页面的方法  重点**********************************
                    console.log('/business/buy/add索引为:'+paretindex);
                    //根据索引执行父页面方法,getDataFromSon 父页面的获取参数方法
                    window.parent[paretindex].getDataFromSon(datass);
	
     


                } else {
                    console.log("不等于200")
                    $.modal.alertError("上传失败:" + response.msg);
                }
            }

讲解很清楚,适合小白照着抄和改.

相关文章:

  • 45.跳跃游戏 II
  • 网络编程—TCP/IP模型(数据链路层了解与知识补充)
  • DApp实战篇:前端技术栈一览
  • [ Redis ] | 初识Redis
  • 【数据结构】图的存储
  • ES使用聚合aggregations实战(自用:2025.04.07更新)
  • 铰链损失函数 Hinge Loss和Keras 实现
  • leetcode-代码随想录-哈希表-赎金信
  • Qt中的多种输出方式,信号与槽的基本使用
  • 场内期权和场外期权开户有什么区别?
  • 【学习笔记】Gymnasium入门(一)
  • 大模型:大模型部署Ollama和Dify
  • Python+AI提示词用贝叶斯样条回归拟合BSF方法分析樱花花期数据模型构建迹图、森林图可视化
  • 学透Spring Boot — 016. 魔术师 - Spring MVC Conversion Service 类型转换
  • SSL证书颁发机构有哪些呢
  • Mysql——DbUtils的使用
  • 二叉树——队列bfs专题
  • Docker容器中的ubuntu apt update报错 解决办法
  • 【58】编程技巧:单片机编程命名规范
  • Oracle数据库数据编程SQL<4.3 事务的补充内容(了解)>
  • 长春作网站建设的公司/有什么推广产品的渠道
  • dw外部网站链接怎么做/大数据精准营销的策略
  • 网站可兼容移动端/会计培训班初级费用
  • 福田最新疫情/全网seo优化电话
  • 广州网站设计开发/百度推广优化排名
  • asp.net 做网站文章是怎么存储的/百度seo排名360