Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Internet Explorer缓存Ajax。。。在其他浏览器中工作正常_Ajax_Jquery Ui_Jquery - Fatal编程技术网

Internet Explorer缓存Ajax。。。在其他浏览器中工作正常

Internet Explorer缓存Ajax。。。在其他浏览器中工作正常,ajax,jquery-ui,jquery,Ajax,Jquery Ui,Jquery,问题是: 我正在使用jQueryUI选项卡。选项卡显示存储在数据库中的数据。假设标签在home.com上。为了编辑数据库中的数据,您将进入一个新页面,在那里您可以编辑数据(例如home.com/edit)。返回home.com后,应显示新数据。google chrome和firefox就是这样,但Internet explorer却不是这样 奇怪之处: 我可以设置$.ajaxSetup({cache:false});现在数据被重新加载。这让我觉得这是InternetExplorer的ajax问题

问题是: 我正在使用jQueryUI选项卡。选项卡显示存储在数据库中的数据。假设标签在home.com上。为了编辑数据库中的数据,您将进入一个新页面,在那里您可以编辑数据(例如home.com/edit)。返回home.com后,应显示新数据。google chrome和firefox就是这样,但Internet explorer却不是这样

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

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

希望这是有道理的。 非常感谢您的帮助

下面是代码的示例: html:

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

找到了答案

大多数信息都表示要使用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=”
"

因此,对于您只希望每页刷新/导航加载一次的ajax请求,请使用服务器端时间戳;对于您永远不希望缓存的ajax请求,请使用jquery客户端时间戳。

Hi David,我添加了一些基本代码,但由于所有内容都在其他浏览器中工作,并且在IE中关闭缓存时工作,这似乎是IE和缓存ajax调用的有趣之处。@cpaloa,我太累了。这里2.35-删除了我愚蠢的回答。对不起,不用担心,谢谢你的帮助。我找到了答案,但由于我是新用户,在发帖后8小时内无法回答自己的问题。明天我将添加解决方案。这是一个简单的解决方案:不让jquery在客户端添加时间戳,而是在服务器端添加时间戳。我觉得我的问题有点太冗长,很难理解。你也可以根据
设置
缓存:false
的基础
.ajax()
,这样你就可以设置一个调用使用
缓存:false
,另一个调用打开缓存。谢谢你的回复。问题是它仍然不会在页面上缓存结果。我希望缓存ajax请求,但当我刷新页面或离开并返回时,我希望更新ajax请求。
$.ajaxSetup({cache:false});
<META HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE">
<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">
$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>"