我花了一段时间试图弄明白这个。我确信拥有合适经验的人能够看到这个问题,但我无法理解为什么它不能持续发挥作用。
基本上,所有这一切都是两次通话。它在页面加载时得到一个数字。然后,当用户提交表单时,它会进行第二次调用,这会告诉我的PHP文件只需将1添加到当前提交的总数中。
它大部分时间都可以工作,在IE7和IE8中它似乎也适合我(有点似乎 - 以某种方式缓存数字,所以你只能告诉它已经从不同的浏览器更新)。
编辑:我只使用IE9的开发者工具测试过IE7和IE8,还没有尝试过我自己的实际安装。
$(document).ready(function() {
var request = window.ActiveXObject ? new ActiveXObject('Microsoft.XMLHTTP') : new XMLHttpRequest;
var url = "counter.php?myaction=getcount";
request.open('GET', url, true);
request.onreadystatechange = function() {
if (request.readyState == 4) {
request.onreadystatechange = doNothing;
updateCounter(request.responseText);
}
};
request.send(null);
});
function doNothing() {};
function addCount() {
var request2 = window.ActiveXObject ? new ActiveXObject('Microsoft.XMLHTTP') : new XMLHttpRequest;
var url2 = "counter.php?myaction=addcount";
request2.open('GET', url2, true);
request2.onreadystatechange = function() {
if (request2.readyState == 4) {
request2.onreadystatechange = doNothing;
updateCounter(request2.responseText);
$('#stcPetitionForm').submit();
}
};
request2.send(null);
}
function updateCounter(numSubmissions) {
$("#myCounter").html("<p>" + numSubmissions + "</p>");
}
答案 0 :(得分:1)
缓存GET请求。您是否在服务器端设置了没有缓存标头?
答案 1 :(得分:1)
这是一个记录完备的问题。 How to prevent Ajax/javascript result caching in browsers?提供了一些您可以尝试的好解决方案。
答案 2 :(得分:0)
这是因为缓存了GET请求。
如何避免缓存的示例:
var d = new Date();
var url2 = "counter.php?myaction=addcount&time=' + d.getTime();
// you'd apply to all your url's not just url2
演示getTime:
function postTime(){
var d = new Date();
console.log(d.getTime());
}
setInterval(postTime,1000);