2

私はこれに対する答えを探しましたが、それが見つからない理由は、最初からスクリプトを完全に台無しにしている可能性があるためです。

フォーム送信の onClick を起動し、script1.php への ajax 呼び出しを実行してから、setInterval でタイマーを開始する JavaScript 関数があります。setInterval は、script1.php からの出力ファイルをポーリングする別の JavaScript 関数を呼び出して、画面に追加された新しいデータを取得できるようにします。この部分は正常に動作します。

ただし、script1.php の処理が終わったらタイマーを止めたいです。どうすればいいですか?実行する最後のステートメントとして script1.php に clearInterval(myTimer) を入れてみましたが、ブラウザーに表示されているようですが、タイマーは停止していません。

<script type="text/javascript">

var myTimer;
var file1 = "script1.php";
var file2 = "script2.php";


function startTimer(myTimer) {
  myTimer = window.setInterval(loadData, 2000);
}

function stopTimer() {
  clearInterval(myTimer);
}

function startData()
{
ajaxRequest(file1,data);
startTimer(myTimer);

}


function loadData()
{
ajaxRequest(file2)
}


</script>


<form action="index.php" method="post">
<div style="text-align:left;width:300px;">
<textarea style="width:300px;height:200px;"> </textarea><BR>
<button type="button" onclick="startData()">get data</button>
</div>
</form>

<div id="myDiv" style="text-align:left;width:500px;border:solid 1px #ccc;padding:50px;">
please enter data above
</div>
4

3 に答える 3

1

myTimerにパラメーターとして渡していますstartTimer。これによりmyTimer、 へのローカル変数が作成されstartTimerます。したがって、グローバルを更新していませんmyTimer

そのはず:

function startTimer() {
  myTimer = setInterval(loadData, 2000);
}

function stopTimer() {
  clearInterval(myTimer);
}

startTimer()次に、 andを呼び出すだけですstopTimer()

于 2012-05-01T18:58:13.903 に答える
1

はい、あなたはそれを台無しにしました。AJAX 呼び出しを実行するスクリプトに直接データを返すように PHP を設定する必要があります。

AJAX が成功すると、PHP スクリプトによって出力されたテキストは、成功のコールバックで使用できるようになります。

JQuery を使用している場合は、次のように簡単になります。

$.ajax({
   url: 'someurl',
   success: function(response) {
      // do whatever with response
   }
});
于 2012-05-01T18:58:32.390 に答える
0

インターバルを開始するときに、「INTERVAL_ITEM」などの公開アクセス可能な変数に割り当てます

応答が clearInterval(INTERVAL_ITEM); に達したとき。

于 2012-05-02T06:17:28.427 に答える