jQuery $。 GetJSON和窗口。位置冲突问题

时间:2011-03-22 07:27:18

标签: javascript jquery ajax window.location

我遇到奇怪的情况,jQuery $.getJSON / $.ajax call被简单的JavaScript window.location = 'http://new.com/'事件打断。

  1. 火灾事件

    window.location = 'http://example.com/something-that-takes-a-couple-seconds';
    
  2. 虽然上述网址正在连接,但在浏览器实际重绘任何内容之前,请进行$.getJSON通话。在我的情况下,我碰巧通过滚动到页面底部来触发它(加载更多结果)。
  3. 而不是实际转到http://example.com/something-that-takes-a-couple-seconds,而是连接到JSON URL http://example.com/ajax/getJSONList.php?params=...并查看纯文本JSON结果集。
  4. 以前有人遇到过这个问题吗?

    我想一个简单的解决方案就是在我发起window.location更改后立即以任何必要的方式阻止所有进一步的javascript执行?

    编辑:您可以在此处查看代码:http://myscubadives.com/,但是浏览时不会特别有趣。

    要重现:首先,使用右上角的Facebook登录按钮。登录Facebook,并允许我的网站访问。一旦Facebook位连接,运行以下行:location.replace('/ user / facebook'); - 我尝试过location.replace(),location.href,window.location。同样的问题。

    现在,当'/ user / facebook'正在连接时,请快速滚动到页面底部。这将触发getJSON调用。而不是点击'/ user / facebook',您将看到RAW JSON。

    我会尝试制作一个示例页面,其他所有其他东西尽快剥离,如果没有人可以这样帮助我。

1 个答案:

答案 0 :(得分:0)

那么,不应该更改window.location强制浏览器连接并开始加载新页面,放弃旧页面的所有AJAX调用?

是的,刚检查,更改window.location上的任何属性,但哈希强制文档重新加载。所以我猜浏览器只是放弃所有当前的AJAX调用来加载一个新文档,这对于浏览器来说是非常合乎逻辑的。

关于如何解决此问题,请在设置window.location后禁止所有AJAX调用。