停止 javascript 缓存
我有一个问题。
我正在使用 zend 创建一个 Web 应用程序,但我的 jquery 和 javascript 遇到了问题。
我有一个页面显示一个订单,其中在脚本标签内的页面上写有 jquery 代码。
我使用 jquery $.post 加载网站上的每个页面。
我的问题是,当您选择一个新的订单页面(第一次访问订单页面),然后单击打开 jquery 对话框的按钮以向订单添加信息时,会发送正确的 post 变量;但是,如果您随后继续处理另一个订单并再次单击该添加按钮,它将发送前一个订单中的后变量。
我假设之前的 javascript 信息已被缓存。如果我清空缓存,它会再次对订单正常工作,但对之后的订单会失败。
我正在使用 php 将相关变量(订单 ID)粘贴到内联 javascript 代码中。
我想这就是我的失败吧。
我不明白的是,javascript 对于页面的初始加载工作得很好,因为它然后使用 ajax 来获取页面的更多部分。这工作正常,但是当我使用按钮时,它会恢复到开始时使用的原始订单 ID。
附件是我的代码:
function getFreightTable()
{
$.post("order/freighttable", "OrderID=<?= $this->orderID; ?>" , function(data){
$("#tabs-3").html(data);
});
}
$("#OrderAddFreightButton").live('click',function() {
$.post("freight/new", "OrderID=<?= $this->orderID; ?>", function(data) {
$("#orderAddFreightDialog").html(data);
$("#orderAddFreightDialog").dialog({
autoOpen: true,
hide: 'slide',
show: 'slide',
title: 'Add New Freight Information',
closeOnEscape: true,
close: function(event, ui)
{
$("#orderAddFreightDialog").empty();
getFreightTable();
}
});
});
return false;
});
我的 php 正在代码中放置正确的订单 ID,但 javascript 正在恢复到较旧的设置。
我在网站的另一部分遇到了类似的问题,并且 javascript 恢复为 3 周前的 javascript 代码,即使我在另一台计算机上使用它并清除了缓存。这让我很害怕。
I have a problem.
I am using zend to create a web application and I have come across a problem with my jquery and javascripts.
I have a page showing a order with jquery code written on the page within script tags.
I'm using jquery $.post to load each page on the website.
My problem is that when you select a fresh order page (first time accessing a order page), then click on a button that opens a jquery dialog box to add information to the order the correct post variables are sent; but if you then went on to another order and clicked that add button again it sends the post variables from the previous order.
I assume the previous javascript information had been cached. If I empty my cache it works fine for the order again but fails on the order after it.
I am using php to stick the variable in question (order ID) into the inline javascript code.
I'm guessing this is my downfall.
What I don't understand is the javascript works fine for the initial loading of the page because it then goes and uses ajax to grab a few more sections of the page. That works fine but when I use my button it reverts back to the original order ID used at the beginning.
Attached is my code:
function getFreightTable()
{
$.post("order/freighttable", "OrderID=<?= $this->orderID; ?>" , function(data){
$("#tabs-3").html(data);
});
}
$("#OrderAddFreightButton").live('click',function() {
$.post("freight/new", "OrderID=<?= $this->orderID; ?>", function(data) {
$("#orderAddFreightDialog").html(data);
$("#orderAddFreightDialog").dialog({
autoOpen: true,
hide: 'slide',
show: 'slide',
title: 'Add New Freight Information',
closeOnEscape: true,
close: function(event, ui)
{
$("#orderAddFreightDialog").empty();
getFreightTable();
}
});
});
return false;
});
My php is placing the correct order id's within the code but the javascript is reverting to an older set.
I am having a similar issue with another section of the site and javascript reverting back to javascript code from 3 weeks ago even though I use it on a different computer and cleared the cache. This is freaking me out.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以使用 jQuery 的 .ajax() 来指定
cache: false
,这将强制请求不缓存请求 - 请注意,您必须重写函数以不再使用$.post
而是使用$.ajax
。如果您不想这样做,您还可以添加到您的网址以欺骗浏览器:这不是最好的方法,但它们都有效。
You can use jQuery's .ajax() to specify
cache: false
, which will force the request not to cache the request -- note that you have to rewrite your function to no longer use$.post
and instead use$.ajax
. If you don't want to do that, you can also add to your url in order to trick the browser:It isn't the best way to do things, but they both work.
我尝试过
cache : false
我尝试在最后添加随机获取变量。
我知道帖子没有被缓存,但每个页面上的 javascript 一定会被缓存,因为正在使用的 javascript 是页面初始视图的第一个版本。
I have tried
cache : false
I have tried adding the random get variable at the end.
I am aware that post is not cached but the javascript that is on each page must be because the javascript being used is the first version from the initial view of the page.