博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ajax请求里面调用window.open会被浏览器拦截(优化版)
阅读量:6642 次
发布时间:2019-06-25

本文共 1613 字,大约阅读时间需要 5 分钟。

众所周知,ajax请求里面调用window.open会被浏览器拦截方法有两种解决办法,但是经测验例如ajax改为async:false同步请求还会出现一些问题(比如站点外网址被拦截);

  • 第一种解决办法优化:

该方法优点描述:比如ajax回调函数失败,浏览器默认打开的空链接会自动关闭,用户体验比较好。

var newwin;    $("#btn").click(function(){        newwim = window.open();        //此处调用ajax,异步即可:        $.ajax({            type:'POST',            url: ajaxurl,                   dataType : 'json',            data:parameter,              beforeSend : function(){},            success:function(data) {                if(data.TSR_CODE == "0"){                                       newwin.location.href = xxx;//xxx为后端返回的地址;                            }else{                    alert(data.TSR_MSG);                    newwin.close();//此处为ajax失败方法,自动关闭刚才会打开的页面;                }            },            error:function(){                console.log("访问出错,请重试!");            },            complete:function(){}        });    });
  • 第二种解决办法分析:

此方法测试过:比如后台返回的是站外网址,谷歌浏览器、360浏览器等等会拦截请求,火狐、qq浏览器不会拦截,预测是浏览器自身对站外网址这种类型做了拦截,普通的网址不被拦截;

$("#btn").click(function(){        //此处调用ajax,异步即可:        $.ajax({            type:'POST',            url: ajaxurl,                   dataType : 'json',            async:false,//改为同步请求            data:parameter,              beforeSend : function(){},            success:function(data) {                if(data.TSR_CODE == "0"){                                     window.open(xxx);                               }else{                    alert(data.TSR_MSG);                                    }            },            error:function(){                console.log("访问出错,请重试!");            },            complete:function(){}        });

转载地址:http://kaovo.baihongyu.com/

你可能感兴趣的文章
Silverlight-Validation服务器端异步数据验证
查看>>
最新VIN(车辆识别码)解析
查看>>
ubuntu下出现的问题-控制台更新源失败
查看>>
获得user account的SID,GUID
查看>>
SkyLine二次开发——解决在web页面启动时自动运行TerraExplorer的问题
查看>>
[转载]我们可以用SharePoint做什么
查看>>
ubuntu 16.04 安装Opencv-3.2.0_GPU 与 opencv_contrib-3.2.0
查看>>
ldap信息交互未完成
查看>>
输出word EXCEL xml html处理---H_print.php
查看>>
【python】安装Python 的IDE--PyCharm
查看>>
【js 方法】js 页面刷新location.reload和location.replace的区别 【转】
查看>>
一个单元测试 学习 aysnc await
查看>>
intellij 创建java web项目(maven管理的SSH)
查看>>
如何将字段中带逗号的SQLite数据库数据导入到MySQL
查看>>
动态规划复习-HDU1159
查看>>
Explain Hello1.java
查看>>
聊天室
查看>>
移动端学习笔记(三)
查看>>
ubuntu下搭建svn服务器
查看>>
Grid保存之后设置某列不可编辑
查看>>