当前位置: 首页 > 面试题库 >

window.open()在AJAX成功方面的工作原理不同

印曜灿
2023-03-14
问题内容

如果我仅向您展示该示例,这将使我更容易解释该问题->
http://jsfiddle.net/RU2SM/
如您所见,有2个按钮,一个称为“ AJAX”,一个称为“ Direct”。
…因此,如果单击“直接”,它将打开窗口(Chrome上为新标签),但是如果我尝试在AJAX成功处理程序上创建window.open(),则它的工作方式将不同。
我确定问题出在AJAX,但我不知道如何解决。
将不胜感激任何好主意。谢谢


问题答案:

这就像一个魅力:

// Direct window.open()
$('#btnDirect').on('click',function(){
    window.open('http://google.com')
})
var success = false;  //NOTE THIS

// AJAX window.open()
$('#btnAJAX').on("click", function(){
    $.ajax({
      url: "/user/login/",
      context: document.body,
      async:false,   //NOTE THIS
      success: function(){  //THIS ALSO CHANGED
         success = true
      }
    });
    if(success){ //AND THIS CHANGED
      window.open('http://google.com')
    }
})

这是当Ajax调用成功时,它将变量成功设置为true。
async:false属性确保在Ajax调用完成之后触发if语句。
因此,在与您的直接链接相同的情况下会触发window.open。



 类似资料:
  • 问题内容: 尝试在我的Ajax成功调用中打开一个新的浏览器窗口,但是,它作为弹出窗口被阻止。我进行了一些搜索,发现需要将用户事件绑定到window.open上,这样才不会发生。 我也找到了这种解决方案,您可以在ajax之前打开空白窗口,然后在成功调用中按正常方式加载url。 因此,我有两个问题: 1-这是唯一的解决方案,因为我不想打开此空白窗口。 2-如果确实是唯一的方法,那么如何将html加载到

  • 在react组件挂载之前,我执行ajax请求以了解用户是否登录。 它应该在响应返回状态代码200时设置状态。 我是否错误地使用了? 编辑01

  • 本文向大家介绍请详细描述AJAX的工作原理相关面试题,主要包含被问及请详细描述AJAX的工作原理时的应答技巧和注意事项,需要的朋友参考一下 AJAX是用于网页和服务器进行异步通信的技术。 基本原理是,通过XMLHttpRequest向服务器发送异步请求,获得服务器返回的数据,利用js更新页面。 其核心功能在于XMLHttpRequest对象。 创建一个ajax的步骤大致可以分为以下几步 创建XHM

  • 一、mitmproxy的工作原理 Mitmproxy是一种非常灵活的工具。准确了解代理过程的工作原理将有助于您创造性地部署代理,并考虑其基本假设以及如何解决这些假设。本文档详细介绍了mitmproxy的代理机制,从最简单的未加密显式代理开始,到最复杂的交互操作-在存在服务器名称指示的情况下,对受TLS保护的流量进行透明的代理。 二、显式HTTP 配置客户端以使用mitmproxy作为显式代理是拦截

  • 因此,在下面的代码中,header方面内部的ajax没有调用backing bean(但我认为它似乎调用了execute和render),但是datatable外部的链接工作得非常好,有人知道为什么吗?

  • 问题内容: 我有一份注册表,正在使用它提交。 这是我的AJAX请求: 在我的 Submit1.php 文件中,我检查数据库中是否存在 电子邮件地址 和 用户 名字 段。如果这些值存在 而没有页面刷新, 则希望显示一条错误消息。 如何将其添加到我的AJAX请求的 成功 回调中? 问题答案: 结果可能不是JSON格式,因此当jQuery尝试如此解析时,它将失败。您可以使用回调函数捕获错误。 无论如何,