ajax请求后弹开新页面被浏览器拦截

ajax请求后弹开新页面被浏览器拦截

 window.open()可以实现除用a标签以外来实现打开新窗口!  最近本来好好的弹出窗口,结果被浏览器无情的给拦截了!

 方法一:

$("#btn").on("click",function(){
    var goto = window.open();
    $.getJSON(URL,data,function(data,state){
        if(state=='success'){
             goto.location.href = 'http://www.cnblogs.com/garfieldzhong/'
        }else{
             alert('请求失败!');
        }
    })
});
弊端:那就是当异步请求失败了,也依然会有一个新窗口打开,因为它的原理很明显,是一开始打开一个空的新窗口,然后改变新窗口的url,以此来实现跳转。

   方法二:

$("#btn").on("click",function(){
    $.ajaxSettings.async = false; //请求前设置为同步请求
    $.getJSON(URL,data,function(data,state){
        $.ajaxSettings.async = true;//切记,请求完成之后要设置回异步
        if(state=='success'){
             goto.location.href = 'http://www.cnblogs.com/garfieldzhong/'
        }else{
             alert('请求失败!');
        }
    })
});
关键词就是$.ajaxSettings.async,设置了ajax请求的方法,请求前为同步请求,这样就能避免被浏览器拦截,但是,不推荐使用同步方法,所以,当此次ajax/getjson完了之后要把值改回 true。
posted on 2017-04-25 14:03  麦田里的包米 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/guanguan-/p/6761760.html

你可能感兴趣的:(ajax请求后弹开新页面被浏览器拦截)