学习笔记

Study notes

在Ajax请求时用_blank方式打开新的页面会被拦截

云逐梦10762016-06-08 16:30:00返回列表

当用户点击页面的一个button,然后用ajax发送请求,对信息进行异步校验,校验通过之后触发一个请求,请求的目标页面需要打开新的页面,也就是请求的action的target属性为“_blank”,但是在测试时发现新开页面会被浏览器拦截。

<html>  
    <head>  
        <title>yun1121 Test ajax</title>  
        <script type="text/javascript" src="jquery.js"></script>  
    </head>  
    <body>  
        <h1>Index Page</h1>  
        <a href="#" id="button">提交</a>  
        <script type="text/javascript">  
            $("#button").click( function() {  
                $.ajax({  
                    url : "#", //url为校验用户信息的方法  
                    async : true,  
                    success : function() {  
                        window.open("http://www.yun1121.com");//window.open效果等于target='_blank'  
                        return false;  
                    }  
                });  
                return false;  
            })  
        </script>  
    </body>  
</html>

说明:代码如上所示,当点击“提交” button时,调用ajax方法,当ajax返回成功响应后打开 http://www.yun1121.com,但是结果却是页面被浏览器拦截。


解决方案:把ajax方法的async属性值设置为false,如下:

$.ajax({  
    url : "#", //url为校验用户信息的方法  
    async : false,  //同步属性设为false  
    success : function() {  
        window.open("http://www.yun1121.com");//window.open效果等于target='_blank'  
        return false;  
    }  
});

这样就能正常打开新的页面了。


返回
顶部