3

Jquery .load 関数を使用して、php ファイルから要素を要求し、ページに表示しています。最初は、first.php の要素のみを要求し、すべてがオンロードで完全にロードされました。次に、second.php の要素を要求する 2 番目の関数を作成しました。これにより、first.php の要素が読み込まれないことがあります (first.php は常に要素を表示する必要があります)。second.php は毎回読み込まれます。何らかの理由で、first.php をロードしてからこのファイルに戻ると、再び適切にロードされます。

attempts = 0;


$(document).ready(function(){
roll_info();
past_rolls();
});

function roll_info(){
   $("#info").load("first.php", timer);
   //to see how many times the function is called 
   attempts++;
 }); 
}

function past_rolls(){
  $("#prevRolls").load("second.php");
}

//called after roll_info()
function timer(){
 //If the element requested by the ajax isn't added to the page it attempts to add again
 if (!document.getElementById("roll_info"))
 {
 roll_info();
 }

 //Refreshes roll_info() every 10 seconds if loaded successfully until no longer waiting
 else if (document.getElementById("status").innerHTML == "Status: Waiting..."){
   nextRefresh = setInterval(function(){
      roll_info();
      clearInterval(nextRefresh);
      return;},10000);
 }
 //other code

「試行」の値をコンソールで見ると、ロード直後に1000以上の数字が表示されます。これは、ajaxを介して何千もの失敗したリクエストが行われたことを意味しますか? コンソールにも目に見えるエラーはありません。

この不一致の原因は何ですか?

4

1 に答える 1

1

first.phpまたはsecond.phpがロードされたときに知りたい場合は、 にコールバック関数を提供します .load

jQuery API Web サイトの例:

$('#result').load('ajax/test.html', function() {
  alert('Load was performed.');
});

ajax/test.html を first/second.php に置き換えるだけです。

ところで、ファイルがロードされたかどうかを確認するために setInterval を使用しないでください。

于 2013-09-03T13:48:23.270 に答える