0

サーバー上にテキスト ファイル ("sample.txt") があり、その内容はランダムな間隔 (250 ミリ秒から 10 秒まで) で変化します。以下のスクリプトは、このテキスト ファイルを 0.5 秒ごとに読み取り、下部の div 要素「cont」にテキストを表示します。すべてが完全に機能します... 1) テキスト ファイルにテキストが含まれているにもかかわらず、約 10% の確率でテキストが表示されないという事実を除いて。2) request.readyState == 4; 3) request.status == 200.なぜこれが起こっているのか、誰にも光を当てることができますか? どんな助けでも大歓迎です。

<body bgcolor=Black>

<script type='text/JavaScript'>

var int=self.setInterval("getText()",500);

function getText() {
   makerequest("sample.txt?v="+Math.random(),"cont");
   }

function makerequest(serverPage, tagID) {
   var request = get_XmlHttp();
   request.open("GET", serverPage);
   request.send(null);
   request.onreadystatechange = function() {
   if (request.readyState == 4) {
      if (request.status == 200) {
         document.getElementById(tagID).innerHTML = request.responseText; }
      } 
   }
}

function get_XmlHttp() {
   var xmlHttp = null;
   if(window.XMLHttpRequest) {
      xmlHttp = new XMLHttpRequest();
   }
   else if(window.ActiveXObject) {
      xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
   }
   return xmlHttp;
}

</script>

<div id="cont">

</div>

</body>
4

1 に答える 1

0

場合によっては、サーバーから txt ファイルが返されるのが速すぎる可能性があります。

結果を関数にバインドする前に( を使用して) HTTP 要求を発行している.send()ため、サーバーがすぐに応答すると、ブラウザーはそれをどう処理するかわかりません。

関数を再配置してみてください。

function makerequest(serverPage, tagID) {
    var request = get_XmlHttp();
    request.open("GET", serverPage);
    request.onreadystatechange = function() {
        if (request.readyState = 4) {
            if (request.status == 200) {
                document.getElementById(tagID).innerHTML = request.responseText;
            }
        } 
    }
    request.send(null);
}
于 2012-09-01T16:35:20.867 に答える