我花了一段时间试图弄清楚这一点。我确信具有正确经验的人将能够看到这个问题,但我只是不明白为什么它不能始终如一地工作。
基本上,这一切都是打两个电话。页面加载时它会得到一个数字。然后,当用户提交表单时,它会进行第二次调用,这会告诉我的 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>");
}