欢迎来到福编程网,本站提供各种互联网专业知识!

Ajax请求成功后打开新窗口地址

发布时间:2016-08-04 作者:Ruthless 来源:转载
这篇文章主要介绍了Ajax请求成功后打开新窗口地址的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下

废话不多说,关键代码如下所示:

代码
  1. jQuery.ajax({
  2. "type":"post",
  3. "url":"http://www.baidu.com",
  4. "success":function(rel){
  5. if(rel.isSuccess){
  6. window.open(rel.url,"_blank");
  7. }
  8. }
  9. });

这个url请求成功后window.open(rel.url,"_blank");会被浏览器拦截,无法打开新窗口,如果把window.open()放在ajax外面,问题就迎刃而解,代码如下:

代码
  1. var result="";
  2. jQuery.ajax({
  3. "type":"post",
  4. "url":"http://www.baidu.com",
  5. "success":function(rel){
  6. if(rel.isSuccess){
  7. result=rel.url;
  8. //window.open(rel.url,"_blank");
  9. }
  10. }
  11. });
  12. if(result.length>0){
  13. window.open(result,"_blank");
  14. }

下面看下在Ajax响应之后打开新窗口

最近的开发中有一个功能,点击一个链接之后,要判断当前的用户是否登录,没有登录的话,需要弹出一个登录对话框,用户登录之后,再在新的窗口(标签)中打开链接指向的Url。

不多说,直接贴出代码:

代码
  1. $(document).delegate("a", "click", function () {
  2. var actionUrl = $(this).attr("href");
  3. var ssoAction = function () { window.open(actionUrl, '_blank'); };
  4. if (isLogin()) {
  5. ssoAction();
  6. } else {
  7. popup.show({login:function () {
  8. $.ajax({
  9. type: "post",
  10. dataType: "json",
  11. url: "/Account/Login",
  12. data: $("frmLogin").serialize(),
  13. //发送方式改为同步,避免弹出页面被浏览器拦截
  14. async: false,
  15. success: function (oData) {
  16. ssoAction();
  17. }
  18. });
  19. });
  20. }
  21. return false;
  22. });

重点:需要使用同步提交,使用异步提交,callback里面打开新窗口(标签),会被浏览器认为是恶意行为。

相关推荐

返回顶部