0

私はこれを理解しようとしばらく時間を費やしました。適切な経験を積んだ人ならきっと問題を見ることができると思いますが、なぜそれが一貫して機能していないのか理解できません。

基本的に、これは2つの呼び出しを行うだけです。ページが読み込まれるときに番号を取得します。次に、ユーザーがフォームを送信すると、2回目の呼び出しが行われ、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>");
    }
4

3 に答える 3

1

GETリクエストはキャッシュされます。サーバーサイドにキャッシュヘッダーを設定していませんか?

于 2012-04-12T16:20:45.827 に答える
1

これはかなりよく文書化された問題です。ブラウザでAjax/javascriptの結果がキャッシュされないようにするにはどうすればよいですか?あなたが試すことができるいくつかの良い解決策を提供します。

于 2012-04-12T16:35:16.417 に答える
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);
    
于 2012-04-12T16:43:37.713 に答える