2009-12-14 3 views
1

현재 나는 정기적으로 게시물을 반환하는 PHP 스크립트에 요청하는 Javascript (JQuery) 프론트 엔드를 가지고 있습니다.JQuery를 사용하여 라이브 업데이트 하시겠습니까?

효율성을 높이기 위해 새로운 결과를 단순히 기존 게시물을 보지 않고 배열에 추가하고 싶습니다.

그 자체로 시간 (즉, "SELECT * FROM table WHERE time> = $ time")을 사용하여 시도했지만, 나의 초기 아이디어를 따르는 데 한계와 무능력을 깨달았습니다.

거기에 아이디어가 있습니까? 데이터를 전송하기 위해 XML을 사용하여 스크립트를 개조하지 않고도이 작업을 수행하는 것이 훨씬 더 바람직합니다. 그러나 그러한 유일한 경우라면 기꺼이 기꺼이 할 것입니다. :)

+0

prepend()을 사용할 수 있습니까? – stimms

+0

이론적으로는 아무것도 없습니다. 난 그냥 내 요구 사항 및 게시물을 검색하는 방법을 준수하는 그것을 사용하는 방법을 발견하지 않았습니다. – NiX

답변

3

:

function loadNewPosts(){ 
    var id = $("#posts > div:last")[0].id.substr(4); 

    $.get('/update.php', { lastId: id }, function(data){ 
     $("#posts").append(data); 
    }, 'html'); 
} 

window.setInterval(loadNewPosts, 1000*60*5) // every 5 minutes 

을 그리고 단지를 찾아 :

<div id="posts"> 
    <div id="post-1"> ... </div> 
    <div id="post-2"> ... </div> 
    <div id="post-3"> ... </div> 
    <div id="post-4"> ... </div> 
</div> 

을이 같은 부하 요청을 업데이트 할 수 있습니다 페이지의 마지막 id보다 큰 id의 새 게시물을 만들고 HTML로 새 게시물을 반환하십시오. 게시물이 역순 경우

업데이트 대신 :last:first 대신 타임 스탬프를 사용하여 뭐가 문제 append()

+0

Hey Doug 오래 전에이 글을 게시 한 것을 알고 있지만 update.php의 모습을 나에게 설명 할 수 있습니까? – BaconJuice

4

귀하의 질문에 많은 것들이 부족합니다. 정기적으로 PHP 스크립트를 호출 할 것이라고 가정합니다. posts 테이블에 자동 증가 ID가 있다고 가정합니다. 그런 식으로 쿼리에 전달하고 새로운 게시물을 얻을 수 있습니다.

var current_id = 1234; // this will need to be filled in somehow 

setInterval(get_latest_posts, 10000); 

function get_latest_posts() { 
    $.getJSON('/latest', {current_id: current_id}, function(data) { 
    current_id = data.new_id; 
    // process data.posts 
    }); 
} 

PHP 스크립트 :

<?php 
mysql_connect(...); 
mysql_select_db('...'); 

// retrieve newer posts 
$current_id = intval($_POST['current_id']); 
$sql = <<<END 
SELECT * FROM posts WHERE id > $current_id 
END; 
$query = mysql_query($sql); 
$new_id = $current_id; 
$posts = array(); 
while ($row = mysql_fetch_array($query)) { 
    $posts[] = $row; 
    $new_id = max($new_id, $row['id']); 
} 

// return the posts as a JSON object  
header('Content-Type: application/json'); 
echo json_encode(array(
    'new_id' => $new_id, 
    'posts' => $posts, 
)); 
?> 

이 주제에 많은 변화가 있습니다. 당신의 HTML이 같은 (당신은 당신의 상황을 조정해야합니다) 보였다 경우

+0

+1 JSON의 좋은 사용 –

관련 문제