2012-08-23 2 views
0

나는이 스크립트를 매 x 초마다 내 div를 업데이트하는 데 사용하고 있습니다.JQuery - 자동 새로 고침 (양식 복제)

<script type="text/javascript" src="jquery.js"></script> 
<script> 
    var auto_refresh = setInterval(
    function() 
    { 
    $('chatbox').load('chat.php').fadein('slow') 
    }, 1000); // refresh every 1000 milliseconds 
</script> 

나는 내 페이지를 볼 때, 그것은 내 전체 페이지를 복제하고 페이지의 끝을 보여, 아무것도, 제출 양식을 작동되지 않았으며 DIV 중복 된 채팅의 사업부를 업데이트하는 데 사용하지만, 컴퓨터 사용률은 99 %로 떨어졌습니다.

뭐가 잘못 되었나요?

+1

양식이'$ ('# form')'을 사용해야하는 div id 인 경우. 그리고 매초마다 그것을하는 것이 아마 CPU에 꽤 어렵습니다. – jeschafe

+0

페이지에 정확히 하나의 '

'이 있습니까? chat.php에서 아무도? –

+1

또한이 페이지는 어떤 페이지에서 호출하고 있습니까? chat.php에서 호출하는 경우에는 "이봐,이 chat.php 페이지의 일부만로드하라"라고 말하는 어떤 방법도 정의하지 않은 것처럼 전체 페이지를 다시 가져올 것입니다. " – jeschafe

답변

2

"form"이 div id 인 경우 $('#form')이 아니고 $('form')이되어야합니다. 후자는 chat.php를 페이지의 모든 양식 요소로로드합니다.

또한 chat.php는 전체 페이지가 아닌 필요한 양식 요소 만 인쇄해야합니다. jQuery는 필요한 것을 파싱하는 기능을 제공합니다. $('#form').load('form.php #form');.

서버는 여전히 전체 페이지를 비효율적 인 클라이언트로 보냅니다. 이것이 문제라면 php를 수정하여 JSON (또는 유사한) 데이터 만 보내고 클라이언트 측에서 필요로하는 형식으로 포맷하십시오.

+0

좋아요, 이제 div가 업데이트되지 않고 새 코멘트가 표시되지 않습니다. ( – devWaleed

+0

Div를 업데이트하여 그룹 채팅 영역과 마찬가지로 다른 사용자의 새로운 댓글도 표시 할 수 있습니다.하지만 중복되어 새로 고침 또는 기부하지 않습니다. – devWaleed

+0

".load()는 일치하는 요소의 HTML 콘텐츠를 반환 된 데이터로 설정합니다."즉, # form의 모든 내용은 chat.php가 표시하는 내용과 함께 _replaced_됩니다. 중복되는 경우 chat.php ** '** form **'은 원래의'# form' div의 자식이 될 것입니다 ** – adamdport