layer插件实现在弹出层中弹出一警告提示并关闭弹出层的方法


Posted in Javascript onSeptember 24, 2019

昨天layer插件弹出层关闭问题弄的我直挠头,短短几行代码,用了我将近2个钟头才解决。我的使用场景是这样。在页面中用layer.open弹出一个层,在层内是微信支付二维码,客户扫码支付。支付成功后关闭此弹出层,并提示项目投递成功,然后再跳转到其他页面。为了监控微信二维码扫码支付是否成功。我利用了每隔三秒,查询下支付订单,查看支付订单的支付状态是否改变。在实际操作中由于使用的是location.href做跳转,然而跳转执行的非常慢,要10几秒才能成功,这不能忍。只能退而求其次,只是提示投递成功,然后关闭弹出层。由于关闭弹出层,及弹出警告提示的相关代码是在弹出层所在页面执行。

实际代码在执行过程当中遇到了各种问题。

$(function () {
      setInterval(GetDeliverProjectPayStatusSuccess, 3000);
    });
    function GetDeliverProjectPayStatusSuccess() {
      $.post("/ajax/GetDeliverProjectPayStatus.ashx", { OrderNo:"<%=Request.QueryString["OrderNo"] %>" }, function (data) {
        console.info(data);
 
        if (data == 1) {
  parent.layer.closeAll();
          layer.alert("项目投递成功");
 
        }
      });
    }

首先尝试的代码如上。先关闭弹出层,然后提示项目投递成功。这尝试的结果是,弹出层被关闭了。却没有任何提示。为什么这样执行,分析的结果是关闭弹出层,意味着弹出页面被关闭。弹出页面被关闭了。在弹出页面存在的layer.alert代码也就无从执行。然后这两行代码调换位置。可仍然是弹出层被关闭了。却没有提示。这个分析的原因是就像javascript中的alert与location.href一样。如果先alert然后在location.href,也不会执行alert,或者说其实有执行,但是由于系统执行的非常快,还没等你看到alert信息,浏览器已经跳转了。这里也是,还没等你看到项目投递成功的信息,弹出层已经关闭了。

又尝试了带回调函数的layer.alert,等客户点击layer.alert的确定按钮后再执行parent.layer.closeAll() 来关闭弹出层。然而残酷的现实是,由于这个是每隔三秒执行一次post请求,结果就是如果你点击关闭按钮过慢,它会每隔3秒弹出项目投递成功的提示。这怎么能用。难道你要求客户必须快速反应,点击关闭按钮?经过不断尝试,最终还是找到了一个方法解决了这个问题。

能够很好解决此问题的代码如下:

$(function () {
      setInterval(GetDeliverProjectPayStatusSuccess, 3000);
    });
    function GetDeliverProjectPayStatusSuccess() {
      $.post("/ajax/GetDeliverProjectPayStatus.ashx", { OrderNo:"<%=Request.QueryString["OrderNo"] %>" }, function (data) {
        console.info(data);
 
        if (data == 1) {
          parent.layer.alert("项目投递成功");
          var index = parent.layer.getFrameIndex(window.name); //先得到当前iframe层的索引
          parent.layer.close(index); //再执行关闭 
 
        }
      });
    }

以上这篇layer插件实现在弹出层中弹出一警告提示并关闭弹出层的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
关于JS控制代码暂停的实现方法分享
Oct 11 Javascript
js判断上传文件的类型和大小示例代码
Oct 18 Javascript
jQuery链使用指南
Jan 20 Javascript
Javascript中的几种URL编码方法比较
Jan 23 Javascript
完美兼容多浏览器的js判断图片路径代码汇总
Apr 17 Javascript
JS实现可点击展开与关闭的左侧广告代码
Sep 02 Javascript
Jquery把获取到的input值转换成json
May 15 jQuery
vue学习教程之带你一步步详细解析vue-cli
Dec 26 Javascript
详解如何使用webpack打包多页jquery项目
Feb 01 jQuery
vue cli3 配置proxy代理无效的解决
Oct 30 Javascript
element实现合并单元格通用方法
Nov 13 Javascript
vue+spring boot实现校验码功能
May 27 Vue.js
解决layer.prompt无效的问题
Sep 24 #Javascript
layer.prompt使文本框为空的情况下也能点击确定的方法
Sep 24 #Javascript
layui-table获得当前行的上/下一行数据的例子
Sep 24 #Javascript
通过实例了解JS 连续赋值
Sep 24 #Javascript
layui--select使用以及下拉框实现键盘选择的例子
Sep 24 #Javascript
JS防抖和节流实例解析
Sep 24 #Javascript
vue.js实现图书管理功能
Sep 24 #Javascript
You might like
定制404错误页面,并发信给管理员的程序
2006/10/09 PHP
ThinkPHP路由详解
2015/07/27 PHP
使用PHP如何实现高效安全的ftp服务器(一)
2015/12/20 PHP
深入浅析php中sprintf与printf函数的用法及区别
2016/01/08 PHP
thinkphp5.0自定义验证规则使用方法
2017/11/16 PHP
鼠标悬浮显示二级菜单效果的jquery实现
2014/10/29 Javascript
JS解析XML实例分析
2015/01/30 Javascript
JavaScript中的DSL元编程介绍
2015/03/15 Javascript
JavaSacript中charCodeAt()方法的使用详解
2015/06/05 Javascript
基于jQuery实现拖拽图标到回收站并删除功能
2015/11/25 Javascript
JSON+Jquery省市区三级联动
2016/01/13 Javascript
jquery ajax局部加载方法详解(实现代码)
2016/05/12 Javascript
JS实现鼠标框选效果完整实例
2016/06/20 Javascript
使用jQuery监听扫码枪输入并禁止手动输入的实现方法(推荐)
2017/03/21 jQuery
BootStrap表单时间选择器详解
2017/05/09 Javascript
jQuery 添加样式属性的优先级别方法(推荐)
2017/06/08 jQuery
vue.js的手脚架vue-cli项目搭建的步骤
2017/08/30 Javascript
webpack4 css打包压缩问题的解决
2018/05/18 Javascript
微信小程序按钮去除边框线分享页面功能
2018/08/27 Javascript
layui(1.0.9)文件上传upload,前后端的实例代码
2019/09/26 Javascript
Python简单格式化时间的方法【strftime函数】
2016/09/18 Python
Python面向对象基础入门之设置对象属性
2018/12/11 Python
Python后台管理员管理前台会员信息的讲解
2019/01/28 Python
python实现五子棋游戏(pygame版)
2020/01/19 Python
python 的numpy库中的mean()函数用法介绍
2020/03/03 Python
python使用gdal对shp读取,新建和更新的实例
2020/03/10 Python
美国牙科折扣计划:DentalPlans.com
2019/08/26 全球购物
了解AppleShare protocol(AppleShare协议)吗
2015/08/28 面试题
安全生产检讨书
2014/01/21 职场文书
对标管理实施方案
2014/03/12 职场文书
捐款倡议书
2014/04/14 职场文书
忠诚教育心得体会
2014/09/03 职场文书
六查六看自检自查剖析材料
2014/10/14 职场文书
python全面解析接口返回数据
2022/02/12 Python
分享3个非常实用的 Python 模块
2022/03/03 Python
如何开启Apache,Nginx和IIS服务器的GZIP压缩功能
2022/04/29 Servers