2012-02-19 45 views
0

PHPファイルからコンテンツを取得して30秒ごとに更新する簡単なコードを書きました。 FireFoxでかなりうまくいきましたが、IE8では一度だけコンテンツを読み込みます! 私はそれを修正するためにどのような体を助けることができますか?Jquery setIntervalはFirefox上ではうまく動作しますが、IE8では動作しませんでした

これは私のコードです:

<script> 

var content; 
var temp = "something"; 

    $.get('refresh.php', function(data) { 
    content = data; 
    }) 
    .success(function() { 
     if (temp != content) { 
      $("#success").fadeOut(2000, function() 
      { 
       $("#success").html(content).fadeIn(2000); 
      } 
     ); // end .fadeOut 
     temp = content; 
    } 

    }) //end .success 

    .error(function() { $("#success").html("error"); }); 

var refreshId = setInterval(function() 
{ 
    $.get('refresh.php', function(data) { 
    content = data; 
    }) 
    .success(function() { 
    if (temp != content) { 
     $("#success").fadeOut(2000, function() 
     { 
      $("#success").html(content).fadeIn(2000); 
     } 
     ); // end .fadeOut 
    temp = content; 
    } 

    }) //end .success 

    .error(function() { $("#success").html("error"); }) 

}, 27000); 
    </script> 

とPHPコードの私はこのコードを持っている:

echo rand(); 
+0

同じコードの重複コピーを持つことは悪いです。関数内に共通コードを置き、同じコードをコピー/ペーストするのではなく、2回呼び出す必要があります。 – jfriend00

答えて

1

IEは、Ajaxの結果をキャッシュされます。あなたの$ .get()呼び出しの前にこれを置く:

$.ajaxSetup({ 
    cache: false 
}); 
+0

ありがとうございました.... –

0

途中のメソッドチェーンで改行やコメントを避ける。最高でもちょうど醜いです、最悪の場合、すべてのjsエンジンがボールを演奏するわけではありません。また、contentの宣言を外側のクロージャに移動し、$("#success")の結果をキャッシュすることができます。

var refreshId = setInterval(function() { 
    var $success = $("#success"); 
    var content; 
    $.get('refresh.php', function(data) { 
     content = data; 
    }).success(function() { 
     if (temp != content) { 
      $success.fadeOut(2000, function() { 
       $success.html(content).fadeIn(2000); 
      }); 
      temp = content; 
     } 
    }).error(function() { $success.html("error"); }); 
}, 27000); 
+0

ありがとう.... –

0

IEのすべての取得要求を現金化、これを試してみてください。

$.get('refresh.php?'+ (new Date().getTime()), function(data) { 
    content = data; 
    }) 
... 
関連する問題