【问题标题】:ajax request giving unwanted responseajax 请求给出不需要的响应
【发布时间】:2012-08-12 03:30:23
【问题描述】:

我有一个 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. 如何在每次提出请求时获取 zoom.htm 的新副本。
  2. 当我用 zoom.jsp 替换 zoom.htm 时(这是我想做的,但我正在使用 html 页面进行测试),它无法正常工作(所有 html 都与 zoom.htm 相同)。李>

【问题讨论】:

  • 谢谢大家的帮助...问题已经解决了

标签: javascript html ajax jsp


【解决方案1】:

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

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

【讨论】:

  • 如果您在更新 zoom.htm 后清空浏览器缓存,然后重试是否可以解决?如果不是,至少在浏览器中缓存不是问题,所以问题一定出在服务器端,或者代理(虽然不太可能)
【解决方案2】:

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

此外,如果您使用的是某种 CMS,您可能还需要禁用服务器端缓存(如果它有这样做的选项)


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

【讨论】:

    【解决方案3】:

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

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

    <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>
    

    askapache 所示。希望对您有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-18
      • 2017-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-06
      相关资源
      最近更新 更多