我遇到奇怪的情况,jQuery $.getJSON
/ $.ajax call
被简单的JavaScript window.location = 'http://new.com/'
事件打断。
火灾事件
window.location = 'http://example.com/something-that-takes-a-couple-seconds';
$.getJSON
通话。在我的情况下,我碰巧通过滚动到页面底部来触发它(加载更多结果)。http://example.com/something-that-takes-a-couple-seconds
,而是连接到JSON URL http://example.com/ajax/getJSONList.php?params=...
并查看纯文本JSON结果集。以前有人遇到过这个问题吗?
我想一个简单的解决方案就是在我发起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。
我会尝试制作一个示例页面,其他所有其他东西尽快剥离,如果没有人可以这样帮助我。
答案 0 :(得分:0)
那么,不应该更改window.location强制浏览器连接并开始加载新页面,放弃旧页面的所有AJAX调用?
是的,刚检查,更改window.location上的任何属性,但哈希强制文档重新加载。所以我猜浏览器只是放弃所有当前的AJAX调用来加载一个新文档,这对于浏览器来说是非常合乎逻辑的。
关于如何解决此问题,请在设置window.location后禁止所有AJAX调用。