$(document).ready(function() {
$('#read').click(function () {
$('#respond').html("Loading...");
$.get("read_data.php", function(data) {
$('#respond').html(data);
});
});
});
上面的代码调用一个简单的php页面来获取数据。它在第一个请求上运行良好但在此之后代码返回相同的数据,即使我更改了php文件,删除了整个数据源并更改了浏览器。看起来它是否缓存了第一个请求。
我搜索了错误日志但没有找到任何内容。 即使数据和页面都是外部的,它也会非常快速地响应。
答案 0 :(得分:1)
这与缓存数据的浏览器有关。你可以通过传递服务器端页面可以忽略的附加参数来解决这个问题。
例如:
$(document).ready(function() {
$('#read').click(function () {
$('#respond').html("Loading...");
$.get("read_data.php?rand="+Math.random(), function(data) {
$('#respond').html(data);
});
});
});
随机值将被传递,浏览器将尝试缓存随收到的数据一起发送的数据,但由于每个请求(有效)都是唯一的,浏览器无法加载缓存的数据。
答案 1 :(得分:1)
除非另行指定或传递查询字符串,否则浏览器通常会缓存GET
个请求。更改您的代码以使用$.ajax
并将cache
参数设置为false
。
$(document).ready(function() {
$('#read').click(function () {
$('#respond').html("Loading...");
$.ajax({
cache: false,
url: "read_data.php"
}).done(function(data) {
$('#respond').html(data);
});
});
});
在内部,jQuery会在请求的末尾添加一个_={some random number}
查询字符串参数,以防止缓存结果。