Ajax 请求给出不需要的响应

ajax request giving unwanted response

本文关键字:响应 不需要 请求 Ajax      更新时间:2023-09-26

我有一个 html 页面index.htm其中我有一个链接,该链接通过 ajax 请求将div 获取到另一个 html zoom.htm,并将其附加到正文,但是当我在 zoom.htm 中进行更改时,更改不会反映,它类似于 zoom.htm 保存在某个地方(缓存),并且它正在从该缓存(我不知道它是否真正缓存)页面中获取div。即使我从项目中删除了 zoom.htm,它仍然显示其内容。

$.get('zoom.htm', function(html) {
 $(html).hide().appendTo('body').fadeIn(500);
}, 'html');
  1. 每次提出请求时.htm我如何获得 zoom 的新副本。
  2. 当我用缩放替换 zoom.htm 时.jsp(这是我想要做的,但我正在使用 html 页面进行测试),它无法正常工作(所有 html 都与 zoom.htm 相同)。

为了防止获得缓存的响应,您只需确保 url 每次都是唯一的,例如附加时间戳:

'zoom.htm?' + new Date().getTime()

尝试检查调试器是否来自缓存。在 Chrome 开发者工具中,它们通常标记为"(来自缓存)"。在Chrome中,您也可以强制禁用缓存。打开开发人员工具,然后单击右下角的齿轮。然后将显示一个叠加层。单击"禁用缓存"。进一步的请求将不使用缓存的对象。

此外,如果您使用的是某种CMS,则可能还希望禁用服务器端缓存(如果可以选择这样做)


另一方面。。。您正在编辑正确的文件吗?您可能正在编辑文件的副本,而不是您尝试检索的文件。一直发生在我身上。

测试获取的 zoom.htm beeing 是否为缓存版本的最简单方法是清除浏览器缓存。例如,Firefox 中的"编辑>首选项>高级:缓存的 Web 内容 => 立即清除"。

然后,假设你的服务器是类似 Apache 的,你可以使用 Header 指令阻止浏览器缓存你的 zoom.htm 文件(即在你的项目目录中创建一个 .htaccess 文件),如下所示:

<filesMatch "'.(html|htm|js|css)$">
    FileETag None
    <ifModule mod_headers.c>
        Header unset ETag
        Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
        Header set Pragma "no-cache"
        Header set Expires "Wed, 11 Jan 1984 05:00:00 GMT"
    </ifModule>
</filesMatch>

如阿斯卡帕奇所示。希望对您有所帮助。