2012-01-02 3 views
0

jQuery를 사용하여 좀 더 정교한 페이지 새로 고침을 시도하고 있습니다. 메타 새로 고침을 사용하면 페이지를 한 번로드하지 못하면 다시로드되지 않습니다. 나는 반복적으로로드하려고 시도하는 것을 만들려고합니다. 한번로드하지 못하면 다음 번에 다시 시도 할 것이므로 마지막로드가 성공하면 페이지의 새 버전을 볼 수 있습니다. 개입 결함이 있었다. 현재JavaScript 페이지 새로 고침을 수정하는 방법

내 코드는 다음과 같습니다

<script language="JavaScript" type="text/javascript" src="/include/jquery.js"> 
</script> 
<script language="JavaScript"> 
    var delay=5*1000; 
    function load(){ 
     setTimeout(load, delay); 
     jQuery("#content").load("calendar_internal.cgi?days=40", function(){ 
      jQuery("#preload").hide("slow"); 
     }); 
     delay = 15*60*1000; 
    } 
    jQuery("#content").load("calendar_internal.cgi?days=40", load); 
</script> 

지금까지 내가 말할 수있는, 이것은 무 조작으로 작동하고 있습니다. 새로 고침하지 않습니다.

어떻게하면 기본 수준에서 작동하여 새로 고침을 할 수 있습니까?하지만 새로 고침을 한 번 수행해도 페이지를보고 싶다면 다시로드해야한다는 의미는 아닙니다.

--EDIT--

지금이 분명히 (빛 테스트 후) 작업은 무엇 : 그런

<script language="JavaScript"> 
var placeholder = jQuery('<div></div>'); 
function load(){ 
    setTimeout(load, 15*60*1000); 
    placeholder.load("logistic_ajax.cgi", function(){ 
     if (placeholder.html()) 
      jQuery('#content').html(placeholder.html()); 
    }) 
} 
load(); 
</script> 
+1

왜로드 함수의 첫 번째 줄에서 setTimeout의 load 함수를 호출하고 있습니까? – Abbas

+0

안정성을 위해. 처음에는 다음 실행을 설정 한 다음 네트워크로드를 시도하므로 네트워크로드가 실패하면 시도한로드가 두 번 이상 손실되지 않습니다. – JonathanHayward

+0

어쩌면 내가 여기있는 논리를 보지 않고 있지만 이것은 무한 재귀 호출이 아니겠습니까? load 함수의 첫 번째 행은 load 함수를 호출하는 setTimeout을 호출합니다. – Abbas

답변

1
var $placeHolder = $('<div />'); 
$placeHolder.load(yourURL,function() { 
    if ($placeHolder.html()) { 
     $("#content").html($placeHolder.html()); 
    } 
}); 

또는 뭔가. 이런 식으로 모든 것을하거나 아무것도하지 않습니다. HTML이 다시 돌아 오면 뭔가 "if"조건을 확인할 수 있습니다. 응답의 세부 사항을 잘 모르므로 직접 해싱하거나 자세한 내용을 알려줘야합니다.

건배.

+0

흠, 여전히 페이지를로드하지 않는 것 같습니다. 로드 영역 외부에 골격이있는 빈 페이지가 나타납니다. – JonathanHayward

+0

@JonathanHayward 여기에서 라이브 버전을 볼 수 있습니다. -> http://www.kitgui.com/docs 소스를보고 javascript가 선언 된 것을 봅니다./js/docs/js에 있습니다. 내가 서버 오류 같은 것을 알지 못하는 당신이하는 일이 있습니까? 선택기 오류? 등등 많은 것들이 잘못 갈 수 있습니다. –

관련 문제