2013-02-02 2 views
0

나는 index.php와 images.php가 있습니다. 그리고 내가 원하는 것은 index.php의 특정 div가 images.php의 내용을 자동으로 가져오고 images.php에 새로운 내용이있을 때 새로 고침한다는 것입니다. 나는 현재이 있습니다콘텐츠가 변경 될 때 jquery refresh div

$(document).ready(function() { 
$.ajaxSetup({ cache: false }); 
setInterval(function() { 
    $('#images').load('images.php'); 
}, 500); 
}); 

이 잘 작동하지만, 내가 원하지 않는 모든 .5s, 나는 그것이 새로운 콘텐츠가 images.php에 삽입 된 경우 다음 감지에로드 할 DIV 새로 고침

하지만, images.php에 타임 스탬프 (1 분 전 등)가 있습니다. 그리고 jQuery는 변경 사항을 변경 사항으로 감지하고 새로 고침합니다.

images.php 페이지에서 이미지 태그 수 (<img>)를 계산하고 index.php 페이지에서 div의 이미지 태그 수와 비교 한 다음 일치하지 않는 경우 index.php에서 div를 새로 고칩니다.

+0

images.php는 이미지 요소가 포함 된 json 배열을 반환 할 수 있습니다. '

+0

아마도 이미지 태그를 "계산"하는 방법이있을 것입니다. XML이 아닌 "JSON"개체를 사용하면 삶을 편하게 만들 수 있습니다. 작은 타임 스탬프를 사용하고 이미지 목록의 마지막 변경 타임 스탬프를 가지고 노는 것은 단지 각각을 로딩하는 것보다 좀 더 효율적일 것입니다 * if (object.length! = $ (selector img) .length) {do_change}; 시각. – Gntem

+0

PHP에서 JavaScript로 이미지 경로와 타임 스탬프를 보내려면 어떻게해야합니까? 두 배열을 어떻게 보내고 JS에서 두 배열을 구별 할 수 있습니까? 현재 PHP에는 이미지 경로를 저장하는 배열과 원시 타임 스탬프가 들어있는 배열이 있습니다. 어떻게 보내겠습니까? 별도의 페이지가 두 개 필요합니까? – ramo

답변

0

짧은 대답은 - 아니요.

코드와 클라이언트 측의 서버 측이 있다는 것을 이해해야합니다. 브라우저가 요청을 보낼 때마다 형식화 된 HTML 페이지 (실행하는 PHP 스크립트가 아님)를 가져오고 모든 임베디드 리소스 (이미지, CSS, JS 파일 등)를 가져옵니다.

그런 다음 클라이언트 (브라우저)와 서버 (웹 서버)간에 통신이 이루어지지 않습니다. 업데이트 된 'images.php'페이지를 얻으려면 서버에서 현재 귀하의 페이지를보고있는 모든 브라우저로 알림을 보내야합니다 (모르는 경우 - 고정 된 연결이 필요하지만 html 프로토콜은 무국적이므로 쉽게 달성 할 수 있습니다.

가장 쉬운 방법은 브라우저 핑 서버를 적시에 (n 초마다) 사용하는 것입니다. 하지만 n 초마다 모든 이미지가 아닌 마지막 변경 날짜를 가져 오는 것이 더 나을 것입니다. 새로운 변경 날짜가있을 때 새 데이터를 가져 오는 논리가 있어야 응용 프로그램에서 보내는 트래픽 양이 줄어 듭니다.

0
var imageWrapper = $('#images'), 
    imageCount = $imageWrapper.find('img').length; 

setInterval(function() { 
    $.get('images.php', function (html) { 
     html = $(html); 
     if (html.find('img').length > imageCount) { 
      $imageWrapper.html(html); 
     } 
    }); 
}, 500); 
+0

이것은 작동하지 않습니다! 그것은 단지 그것을로드하지 않습니다. 도와주세요 – ramo

관련 문제