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 相关文章推荐
一段多浏览器的&quot;复制到剪贴板&quot;javascript代码
Mar 27 Javascript
Javascript 调试利器 Firebug使用详解六
Jul 05 Javascript
JS无限树状列表实现代码
Jan 11 Javascript
jquery 圆形旋转图片滚动切换效果
Jan 19 Javascript
Bootstrap基本组件学习笔记之按钮组(8)
Dec 07 Javascript
Android中Okhttp3实现上传多张图片同时传递参数
Feb 18 Javascript
详解Vue 全局引入bass.scss 处理方案
Mar 26 Javascript
react native 文字轮播的实现示例
Jul 27 Javascript
js获取浏览器地址(获取第1个斜杠后的内容)
Sep 03 Javascript
node.js事件轮询机制原理知识点
Dec 22 Javascript
基于JS实现快速读取TXT文件
Aug 25 Javascript
vue中axios封装使用的完整教程
Mar 03 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
php中global和$GLOBALS[]的分析之一
2012/02/02 PHP
php几个预定义变量$_SERVER用法小结
2014/11/07 PHP
利用Ext Js生成动态树实例代码
2008/09/08 Javascript
利用JS解决ie6不支持max-width,max-height问题的方法
2014/01/02 Javascript
JS+JSP checkBox 全选具体实现
2014/01/02 Javascript
js 判断浏览器使用的语言示例代码
2014/03/22 Javascript
nodejs URL模块操作URL相关方法介绍
2015/03/03 NodeJs
JavaScript实现的伸展收缩型菜单代码
2015/10/14 Javascript
分享几种比较简单实用的JavaScript tabel切换
2015/12/31 Javascript
EasyUI在表单提交之前进行验证的实例代码
2016/06/24 Javascript
Bootstrap Scrollspy源码学习
2017/03/02 Javascript
jQuery实现字体颜色渐变效果的方法
2017/03/29 jQuery
详解JSONObject和JSONArray区别及基本用法
2017/10/25 Javascript
JavaScript 有用的代码片段和 trick
2018/02/22 Javascript
vue 界面刷新数据被清除 localStorage的使用详解
2018/09/16 Javascript
JavaScript判断浏览器版本的方法
2019/11/03 Javascript
如何基于原生javaScript生成带图片的二维码
2019/11/21 Javascript
微信小程序修改数组长度的问题的解决
2019/12/17 Javascript
[18:16]sakonoko 2017年卡尔集锦
2018/02/06 DOTA
Python使用QRCode模块生成二维码实例详解
2017/06/14 Python
对python中return和print的一些理解
2017/08/18 Python
tensorflow创建变量以及根据名称查找变量
2018/03/10 Python
Python 实现还原已撤回的微信消息
2019/06/18 Python
Python3.8对可迭代解包的改进及用法详解
2019/10/15 Python
opencv 图像滤波(均值,方框,高斯,中值)
2020/07/08 Python
Hertz荷兰:荷兰和全球租车
2018/01/07 全球购物
Does C# support multiple inheritance? (C#支持多重继承吗)
2012/01/04 面试题
优秀党员转正的自我评价
2013/10/06 职场文书
中专毕业生自我鉴定
2013/11/21 职场文书
医务人员自我评价
2014/01/26 职场文书
《长相思》听课反思
2014/04/10 职场文书
2015年安全工作总结范文
2015/04/02 职场文书
安全学习心得体会范文
2016/01/18 职场文书
中小学教师继续教育心得体会
2016/01/19 职场文书
2016个人廉洁自律承诺书
2016/03/25 职场文书
python利用while求100内的整数和方式
2021/11/07 Python