2013-05-11 2 views
0

자바 스크립트 롱 폴링 스크립트에서 msgsrv.php를 호출하여 num_rows을 아직 화면에 표시하지 않습니다. 여기에 작동하는 자바 스크립트입니다 :

<script type="text/javascript" charset="utf-8"> 
function addmsg(type, msg){ 
    /* Simple helper to add a div. 
    type is the name of a CSS class (old/new/error). 
    msg is the contents of the div */ 
    $("#notiWrap.notiZero").html(
     "<div id='notiZero "+ type +"'>"+ msg +"</div>" 
    ); 
} 

function waitForMsg(){ 
    /* This requests the url "msgsrv.php" 
    When it complete (or errors)*/ 
    $.ajax({ 
     type: "GET", 
     url: "http://mediahood.net/widgets/txtr/inc/msgsrv.php", 

     async: true, /* If set to non-async, browser shows page as "Loading.."*/ 
     cache: false, 
     timeout:50000, /* Timeout in ms */ 

     success: function(data){ /* called when request to barge.php completes */ 
      addmsg("notiMsg", data); /* Add response to a .msg div (with the "new" class)*/ 
      setTimeout(
       waitForMsg, /* Request next message */ 
       1000 /* ..after 1 seconds */ 

      ); 
     }, 
    }); 
}; 
$(document).ready(function(){ 
    waitForMsg(); /* Start the inital request */ 

}); 
</script> 

그러나, msgsrv.php 데이터베이스의 실제 최신 행을 알고 있지만, 지금은 페이지에로드 된 최신 행의 ID를하지 않습니다. $ num_rows가 작동합니다. $ loaded_rows가 실패합니다. JS가 msgsrv.php를 호출 할 때 데이터베이스의 실제 num_rows로 재설정되므로 $ loaded_rows가 실패합니다. 나는 PHP가 최신 행을 쿼리하는 방법을 이미 알고 있기 때문에 데이터베이스 대신에 $ loaded_rows를 읽어야한다.

<?php 
/* Send a string after a random number of seconds (2-10) */ 
sleep(2); 

include('/home/alimix/public_html/include/conn.php'); 

/* Variables */ 
$nr = mysql_query("SELECT * FROM txtr"); 
while(mysql_fetch_array($nr)) 
{$nowrecent = mysql_num_rows($nr);} 

$mr = mysql_query("SELECT * FROM txtr "); 
for($i=0; $i < 1; $i++) 
{$mostrecent = "$nowrecent";} 
/* $mostrecent shouldn't equal $nowrecent if new rows aren't loaded*/ 
    $minus = $nowrecent - $mostrecent; 

     if ($minus > 0) { 
      //echo $nowrecent; 
      echo $minus; 
      //echo $mostrecent; 
     } 
     elseif($minus < 1) { 
      echo "nr".$nowrecent.""; 
      echo " "; 
      echo "mr".$mostrecent.""; 
     } 


?> 

답변

0

대신이 먹이 : 여기

내 msgsrv.php입니다

url: "http://mediahood.net/widgets/txtr/inc/msgsrv.php", 

피드이 :

당신이 행을받을 때마다,에 mylastID을 설정

url: "http://mediahood.net/widgets/txtr/inc/msgsrv.php", 
    data: { 
     lastID: mylastID 
    }, 
새로운 최신 ID (그리고 mylastID가 AJAX 호출의 범위에 있는지 확인하십시오). 즉, $ _GET [ 'lastID']를 사용하여 값을 복구 할 수 있습니다!

+0

이오 얼마나 오래 알아낼 수 있을지 모르겠지만 나에게 맞는 대답을 줄 수도 있습니다. 어쨌든. –