ajax请求成功后,我们想在success中打开一个新的页面,如果是在当前页面跳转,可以直接用window.location.href="链接",但是如果想打开新页面,需要用window.open()方法
简单介绍window.open()的使用方法,window.open("链接","打开方式"),如:window.open("http://boke.daxiaokj.cc","_blank");
但是在ajax异步加载成功时用window.open()打开新链接,会默认被浏览器拦截,因为毕竟是ajax异步加载到的信息,浏览器会认为它是不安全的,所以不让跳转,这时有一个很简单的解决办法,把异步加载改成同步即可,即:anysc:false,但是如果ajax的加载的信息来自于另外一个网站,需要用到jsonp跨域传数据,这时的ajax强制使用异步加载(ajax跨域只能异步加载,同步无效),这样来讲window.open肯定要被拦截,所以这里有一个解决方法:将新开窗口指向为一个对象,然后修改对象的 url
举个例子:
$('.task').click(function(){
var open= window.open();
$.ajax({
type: 'POST',
url: '/surveyTask',
dataType: 'json',
success: function(res){
open.location = res.url;
},
error: function(){
open.close();
},
});
});
小技巧而已,如有不同见解,欢迎下方留言。
打赏