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

Chrome中的Ajax + pushState错误

葛子昂
2023-03-14
问题内容

我在Chrome
19中遇到了一个奇怪的错误。我在pushState支持下实现了完整的AJAX网站(通过AJAX请求打开了每个非外部链接)。我通过JSON格式以AJAX格式传输HTML代码段。

当我通过外部链接离开网站然后返回时,Chrome会渲染该URL的缓存数据-问题是,他缓存了JSON内容并显示了该内容,而不是完整的网页。

这可以通过以下步骤来重现( 更新:此后,我在网站上删除了AJAX功能,因此不再出现此错误 ):

  1. 开启http://beta.mirtes.cz/
  2. 单击第二个日期链接(“这一切都始于一封奇怪的电子邮件”旁边的16. 6. 2012)。该页面(您现在位于http://beta.mirtes.cz/it-all-began-with-a-strange-e-mail)是通过AJAX加载的。
  3. 单击“这都是从一封奇怪的电子邮件开始的”。您将被重定向到外部网站。
  4. 页面完全加载后,在Chrome中单击“返回”。

我尝试使用Cache-Control发送所有AJAX响应:无缓存,但是没有效果。

Firefox 12正常运行。


问题答案:

我提供了一种解决方法-我使用其他虚拟GET参数-Ajax =
1执行AJAX请求。这样,浏览器就可以识别普通HTML内容和JSON之间的区别。它对用户没有任何影响,该参数仅在Firebug中可见。



 类似资料:
  • 问题内容: 问题总结 通过表单身份验证使用Chrome登录后。作为returnUrl的登录页面将在不访问服务器的情况下使我的jQuery ajax错误。的和。(几乎没有用)。在尝试使用Firefox且无法复制问题后,我开始认为Chrome是问题所在。清除缓存,关闭和重新打开均无法解决。我能找到的最接近的文章是这个。jQuery Ajax-状态码0? 但是,URL是相对的, 较长的描述 jQuery

  • 我正在使用<code>窗口。JavascriptMVC应用程序中的历史记录,为每个控制器启用后退/前进/刷新功能。每次加载新控制器时,我都在使用<code>window.history。按下状态,将新状态添加到历史记录中。然后在返回/刷新时,我使用保存的状态并重用数据来再次构建控制器。 除了一个特定场景的问题外,整个想法都很好。我得到以下错误: 未能执行“pushState”“历史”:一个obj

  • 我看到了这个问题。在Chrome/Safari中,设置为包含一些特殊字符(即西班牙语颚化符“i”)的内容的Ajax响应无法正确解释。 这里的一个例子完美地总结了这个问题: 我试过Firefox和IE,两者都很好。只有Chrome无法正确显示网页。这是URL:http://maixner.eu/#bio正如你所见,有些字符是错误的。这条线:2012-Museum moderního umÄ›ní

  • 问题内容: 我在我的页面上运行了以下jQuery代码,它们在FF和IE中都很好,但是Chrome似乎吓坏了。 在FF和IE中,将进行调用并将结果附加到div。在chrome中,失败时会调用ajaxfailed。 传递给AjaxFailed函数的XMLHttpRequest的状态码为“ 200”,statusText为“ ok”。readystate是4,responseText设置为我希望追加到d

  • 问题内容: 我有一个网页,可通过Ajax处理机器的远程控制。当用户离开页面时,我想自动与机器断开连接。所以这是代码: 断开连接功能只是将HTTP GET请求发送到PHP服务器端脚本,该脚本完成了断开连接的实际工作: 在FireFox中可以正常工作。但是使用Chrome,根本不会发送ajax请求。有一个不可接受的解决方法:向回调函数添加警报: 添加警报呼叫后,请求将成功发送。但是正如您所看到的,这根

  • 本文向大家介绍pushState、replaceState、onpopstate 实现Ajax页面的前进后退刷新,包括了pushState、replaceState、onpopstate 实现Ajax页面的前进后退刷新的使用技巧和注意事项,需要的朋友参考一下 使用Ajax可以异步获取数据,可以更高效地渲染页面。 但也存在这一些问题: 再刷新页面,页面就会变成初始的状态 浏览器的前进后退功能无效 对