2011-03-25 1 views
1

내 스크립트가 제대로 작동합니다. 그러나 새 데이터를 얻기 위해 내용 자체가 새로 고쳐지지 않습니다. 왜 그래야만하지?Ajax 기능이있는 페이지가 데이터를 새로 고치지 않습니다.

function updateMsg() { 
    $.ajax({ 
     url: "/recent/notifications/", 
     cache: false, 
     success: function(html){  
     $("#profile_notifarea_msgbox").html(html); 
     } 
    }); 
    setTimeout('updateMsg()', 4000); 
} 
updateMsg(); 
+1

자세한 내용에 이상이있는 경우 항상 식별 할 수있는이 방법으로 오류 기능을 넣어하려고 jQuery로 Ajax를 사용합니까? 콘텐츠가 새로 고침되지 않습니까? 나는 그것을 얻지 않는다. –

+0

차이는 없지만 "setTimeout"호출은 단지'setTimeout (updateMsg, 4000); '일 수 있습니다. FireBug는 ajax 호출의 응답에 대해 무엇을 표시합니까? – Pointy

+0

... 표시 할 새 데이터가 있습니까? – rockerest

답변

1

귀하의 setTimeout 대신 문자열을 사용하는 직접 updateMsg를 참조 할 수 있습니다 :

var timeout; 

function updateMsg() { 
    $.ajax({ 
     url: "/recent/notifications/", 
     cache: false, 
     success: function(html){  
     $("#profile_notifarea_msgbox").html(html); 
     timeout = setTimeout(updateMsg, 4000); 
     } 
    });  
} 
updateMsg(); 

function stopUpdate() { 
    clearTimeout(timeout); 
} 

당신이 변수에의 setTimeout에 대한 참조를 저장 연속 갱신을 중지 한 다음 사항 clearTimeout를 호출하고 그 변수에 전달하려면 . 이 예제에서는 stopUpdate() 함수를 호출하여 업데이트를 취소합니다.

+0

updateMsg()를 성공 콜백, 충분하지 않을까요? 데이터가 반환 된 후에 페이지를 업데이트하는 것이 좋다고 가정하고 시간 제한을 모두 없앨 수 있습니다. – Luke

+0

@ 루크 그러면 결과를 얻 자마자 즉시 다시 전화 할 것입니다. 응답이 웹 서버에서 얼마나 빠르 느냐에 따라 몇 초에 걸쳐 아약스 요청을 실행할 수 있습니다. –

+0

@infernal은 코드 줄과 내 줄의 차이점을 무엇입니까? $ (document) .ready 너무 길기 때문에 여기에 넣기에는 너무 길다. –

0

당신이 뭔가 요청