ajax在请求完数据之后,重定向到一个新页面
"top.location.href"是最外层的页面跳转
"window.location.href"、"location.href"是本页面跳转
"parent.location.href"是上一层页面跳转.
location是window对象的属性,而所有的网页下的对象都是属于window作用域链中(这是顶级作用域),所以使用时是可以省略window。而top是指向顶级窗口对象,parent是指向父级窗口对象。
除此之外,打开一个新窗体,使用window.open(),它可以实现除用a标签以外来实现打开新窗口!
但是,有个问题,ajax回调打开新窗体,会被浏览器拦截!!!
function click_fun(){
window.open("www.baidu.com");//能打开
$.ajax({
'url': '/workflow/model/save',
'type': 'post',
'dataType': 'json',
'data': {"modelId" : id}
success: function (data) {
window.open("www.baidu.com");//被拦截
},
});
}
打开新窗体只能在点击事件内触发,点击事件内的回调函数内打开窗体会被拦截,浏览器会认为是广告弹窗之类的代码
解决方法
function click_fun(){
var tempwindow=window.open();//先打开临时窗体,由于是点击事件内触发,不会被拦截
$.ajax({
'url': '/workflow/model/save',
'type': 'post',
'dataType': 'json',
'data': {"modelId" : id}
success: function (data) {
tempwindow.location = "www.baidu.com";//当回调的时候更改临时窗体的路径
},
error:function(){
tempwindow.close();//回调发现无需打开窗体时可以关闭之前的临时窗体
}
});
}
但是存在一个问题,在请求之前,会首先跳转一个空白页面,如果不跳转,空白页面再关闭