【问题标题】:Wait for window to close before running ajax.done在运行 ajax.done 之前等待窗口关闭
【发布时间】:2013-08-11 10:07:18
【问题描述】:

如果不刷新页面,我真的不知道这是否可能,但基本上我有一个用户可以填写的表单,然后如果他们没有登录,则会触发弹出窗口。如果用户选择他们想用 Facebook 登录,我想授权登录服务器端。我通过在授权位置打开一个新窗口来做到这一点。

我想处理来自新窗口的数据,然后在加载并授权用户后将其关闭。

目前我有:

sessionSetRequest.done(function(){

     var facebookAuthWindow = window.open(window.location.origin + '/auth/facebook');
     facebookAuthWindow.onload = function(){
         facebookAuthWindow.close();
     };
});

但是.onload()函数没有被调用。

或者,有没有办法让我通过加载一个自行关闭的页面来关闭新窗口,然后在原始页面中运行另一个功能?

许多人先发制人地感谢您的帮助;关于帮助主题,您可能想查看我正在构建的网站(;

www.dev.thinkshare.it/about

【问题讨论】:

  • 欢迎来到 Stack Overflow!您可以在这里发布您已经拥有的代码的相关部分吗?
  • 在下面完成!真的很奇怪,当我在 W3Schools 编辑器上测试它时它可以工作,但是当我尝试这样做时,.onload() 方法似乎没有被调用。这可能是因为它在 request.done() 函数内吗?

标签: php jquery ajax window


【解决方案1】:

更多细节会有所帮助。在您提供的站点中,我转到“共享”链接,输入了一些内容,然后在提交弹出窗口之前提出了登录或注册的选项。我试图注册,当我点击“注册”时,只有他们发布了表格,我的“想法”(不过是一个随机字符串)被发布了。我用的是chrome。

你说的是同一个用例吗?您是否希望当您点击“注册”或“登录”时,表单不应该发回?

【讨论】:

  • 不,这与 Facebook 登录有关,我尝试使用另一个窗口登录用户,然后关闭窗口并返回表单。这样我就不会丢失他们输入的内容,并且在用户实际登录之前我不必存储任何内容。
  • 我现在有这个:var facebookAuthWindow = window.open(window.location.origin + "/auth/facebook"); facebookAuthWindow.onload = function(){ facebookAuthWindow.close(); };
  • “通过 AJAX 触发弹出窗口。”- 之前的评论和你最新的 cmets 让我感到困惑。上面的代码似乎不是 AJAX。您能否编辑您的原始帖子并使用相关代码示例详细描述问题。
  • 我可以看到你现在拥有的东西。你需要什么还不清楚。您是否希望在调用 facebookAuthWindow.close(); 之前不提交表单?
  • 嗯,就是这样,关闭操作没有执行。我需要先加载窗口,因为只有这样才能对用户进行身份验证。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-05-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-05
  • 1970-01-01
相关资源
最近更新 更多