ajax请求,重定向到一个新页面以及回调打开新窗体被拦截

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();//回调发现无需打开窗体时可以关闭之前的临时窗体 
    } 
  }); 
}

但是存在一个问题,在请求之前,会首先跳转一个空白页面,如果不跳转,空白页面再关闭

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值