2012-02-19 2 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

같은 코드의 중복 복사본을 갖는 것은 좋지 않습니다. 공통 코드를 함수에 넣고 동일한 코드를 복사/붙여 넣기하는 대신 두 번 호출해야합니다. – jfriend00

답변

1

IE는 아약스 결과를 캐시됩니다.() 호출을 $ 갔지 전에 넣어 : 중반 메소드 체인

$.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; 
    }) 
... 
관련 문제