我遇到了一个奇怪的情况,即 jQuery $.getJSON
/$.ajax call
被普通的 JavaScriptwindow.location = 'http://new.com/'
事件打断。
火灾事件
window.location = 'http://example.com/something-that-takes-a-couple-seconds';
- 虽然上面的 URL 正在连接,但在浏览器实际重绘任何内容之前,
$.getJSON
请拨打电话。就我而言,我碰巧通过滚动到页面底部来触发此操作(加载更多结果)。 - 而不是真正去
http://example.com/something-that-takes-a-couple-seconds
,而是连接到 JSON URLhttp://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 调用。您将看到 RAW JSON,而不是点击“/user/facebook”。
如果没有人能以这种方式帮助我,我将尝试制作一个示例页面,并尽快删除所有其他内容。