gpt4 book ai didi

ajax - Internet Explorer 缓存 Ajax...在其他浏览器中运行良好

转载 作者:行者123 更新时间:2023-12-01 04:12:17 25 4
gpt4 key购买 nike

问题:我正在使用 Jquery UI 选项卡。这些选项卡显示存储在数据库中的数据。假设标签位于 home.com 上。为了编辑数据库中的数据,您将进入一个新页面,您可以在其中编辑数据(例如 home.com/edit)。返回 home.com 后,应会显示新数据。谷歌浏览器和火狐浏览器是这种情况,但 Internet Explorer 不是这种情况。

奇怪之处:我可以设置 $.ajaxSetup({cache:false});现在数据已重新加载。这让我认为这是 Internet Explorer 的 ajax 问题(忽略 get 请求)。问题是我不想将缓存设置为 false。我只希望在单击选项卡时加载一次选项卡(样式、javascript、数据等不需要重新加载。)。即,只有当您转到不同页面然后返回时,才应该重新加载该选项卡,而不是每次单击该选项卡时。

此外,当所有 IE 窗口关闭,然后导航回 home.com 时,将显示更新的数据。数据正在站点上刷新,但只是不在进行 ajax 调用的页面上刷新。看起来行为应该是除非刷新整个页面,否则应忽略发出的 ajax Get 请求,但行为似乎是除非刷新 session ,否则忽略 ajax Get 请求。

希望这是有道理的。非常感谢任何帮助!

以下是代码的示例:html:

<div id='tabs'>
<ul>
<li><a href='Home.php?viewIsActive=true&tab=true'> Active </a></li>
<li><a href='Home.php?listAll=true&tab=true'> List All </a></li>
</ul>
</div>

Javascript:

$("#tabs").tabs();

选项卡之间的切换应该缓存,但重新加载页面也应该重新加载选项卡。

最佳答案

明白了!

大多数信息都说要么使用 Jquery:

$.ajaxSetup({cache:false});

或者html标题

<META HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE">
<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">

问题是这两者都完全依赖缓存。在我的情况下,我只想关闭 ajax 缓存,并且只在页面重新加载时关闭,而不是在页面内关闭。

$.ajaxSetup({cache:false});将在 ajax get url 中添加时间戳。麻烦的是,每次单击该选项卡时,都会添加一个新的时间戳,使 IE 认为这是一个新的 URL,并重新加载所有信息。

解决方案:将时间戳添加到服务器端。这样,每次重新加载页面并联系服务器时,都会有一个新的时间戳。但是,当您在客户端单击时,IE 不会重新加载 URL,因为它是相同的,并且仅在页面重新加载/导航离开和返回时发生变化。

php:

$time = time();
$tabs = "<div id='tabs'>
<ul>
<li><a href='Home.php?viewIsActive=true&tab=true&timeStamp=" . $time . "'> Active </a></li>
<li><a href='Home.php?listAll=true&tab=true&timeStamp=" . $time . "'> List All </a> </li>
</ul>
</div>"

因此,对于您只想在每次页面刷新/导航时加载一次的 Ajax 请求,请使用服务器端时间戳,对于您不想缓存的 Ajax 请求,请使用 jquery 客户端时间戳。

关于ajax - Internet Explorer 缓存 Ajax...在其他浏览器中运行良好,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18883912/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com