2016-08-14 2 views
2

데이터베이스에 몇 개의 행이 있는지 표시하려고합니다. 동적으로 업데이트해야하므로 행 수가 변경되면 표시된 숫자도 업데이트됩니다. PHP로 인쇄하려고했지만 동적은 아닙니다. 여기 JQuery에서 동적으로 업데이트 된 데이터를 표시하는 방법

는 인덱스 파일입니다

<script> 
     $(document).ready(function() { 
      setInterval("ajaxcall()",2000); 
     }); 

     function ajaxcall() { 
     $.ajax({ 
     type: "GET", 
     url: "count.php" 
     success: function(response){ 
      json_object = JSON.parse(response) 
      var count = json_object.count 

     // HOW TO DISPLAY COUNT SO IT IS DYNAMIC 
     } 
     }); 
     } 
     </script> 

그리고 여기

$num_rows = mysql_num_rows($result); 
echo json_encode($num_rows); 
+0

'dynamic'은 서버에서 db가 변경되거나 페이지의 어딘가에 표시되어야하고 2 초마다 (ajax 호출을 할 때) 업데이트해야 할 때 카운트가 자동으로 변경되어야한다는 것을 의미합니까? – charsi

답변

2

AJAX 응답의 count 변수를 사용하여 DOM 요소를 업데이트 할 수 있습니다.

이 AJAX 성공 호출에서 다음
<span id="database-results"> 
</span> 

HTML 요소에 count 변수를 추가 : 추가 참고로

success: function(response) { 
      json_object = JSON.parse(response) 
      var count = json_object.count 

      $("#database-results").text(count); 
} 

, 당신이 스팸 될 서버 다음과 같은

뭔가 사용자 기반에 따라 AJAX 요청이 2 초마다 고려해야 할 사항 일 수 있습니다.

+0

이것은 동적 인 것이 아닙니다. vonder가 클라이언트에서 실시간으로 카운트를 업데이트하려고한다고 생각합니다. – charsi

+0

@charsi - AJAX 요청이있을 때마다 업데이트됩니다 .OP는 이미 $ .ajax 메소드를 사용하고 있습니다. 그래서 이것은 이미 솔루션으로 자리 잡은 것을 바탕으로 구축하는 것이 합리적입니다. –

+0

그의 질문에서 그는 더 이상 아약스 호출없이 자동으로 업데이트되기를 원하는 것처럼 보입니다. – charsi

3

당신이 중 하나를해야 할 count.php입니다 -

  • 가 주기적으로 아약스 업데이트를 확인하기 위해 전화를 걸에게 가치 (이것은 현재하고있는 일입니다.) - 사용자가 매우 오랫동안 연결될 것이라는 잘못된 생각입니다.
  • 또는 더 좋은 해결책은 HTML5 web sockets을 대신 사용하는 것입니다.

socket.io과 같은 프로젝트는 자바 스크립트 서버 (노드)에서 웹 소켓을 구현하기가 매우 쉽습니다. 그러나 PHP에는 몇 가지 옵션이 있습니다. -

  • Ratchet - socket.io와 유사하지만 PHP 용으로 제작되었습니다.
  • Elephant.io - 또한 웹 소켓의 PHP 구현이지만 서버에서 작동하도록 설계된 ws '클라이언트'입니다. 따라서 서버에 node와 socket.io를 배포하고 elephant.io를 사용하여 다른 클라이언트와의 웹 소켓 통신을 처리해야 할 수도 있습니다.
  • phpsocket.io - "Workerman을 기반으로 PHP에서 socket.io의 서버 측 대체 구현" - github 페이지에 따르면

phpsocket.io에 대한 많은 문서는 없지만 API는 readme의 예제에서 충분히 간단합니다.

<? 
use PHPSocketIO\SocketIO; 

// listen port 2021 for socket.io client 
$io = new SocketIO(2021); 
$io->on('connection', function($socket)use($io){ 
    $socket->on('get count', function($msg)use($io){ 
     $num_rows = mysql_num_rows($result); 
     $io->emit($num_rows, $msg); 
    }); 
}); 

을하고 client--

var count = 0; 
// check if browser supports websockets 
if ("WebSocket" in window) { 
    var ws = new WebSocket("ws://yourdomain.com:2021/"); 
    ws.onopen = function() { 
     // Web Socket is connected, send data using send() 
     ws.send("get count"); 
    }; 
    ws.onmessage = function (evt) { 
      var received_msg = evt.data; 
      json_object = JSON.parse(response) 
      count = json_object.count 
      $("#database-results").text(count); 
    }; 
} 

에 * 면책 조항 - - 이런 식으로 뭔가가 당신을 위해 작동합니다 나는 위의 코드를 테스트하거나 전에 phpsocket.io 라이브러리를 사용하지 않았습니다. 따라서 코드가 작동하지 않을 수 있습니다. 또한 래칫 (Ratchet)은 더 성숙한 프로젝트로 보이므로 앱에 대해보다 강력한 솔루션을 원한다면 더 자세히 조사해야합니다.

나는 스레드 위의 정보를 많이 가지고있어 this 스레드. 그러나 몇 가지 정보가 있지만 몇 년 만에 구식이며 최고 등급의 응답은 오늘 최고의 솔루션을 제공하지 않습니다.

관련 문제