2012-05-11 5 views
2

사용자 이름과 같은 데이터를 저장하는 mysql 데이터베이스가 있습니다. 결과를 데이터베이스에서 검색하여 JSON 문자열로 인코딩하는 PHP라는 파일이 있습니다. 그런 다음 동일한 PHP 파일이 페이지 재로드없이 결과를 출력하기를 원합니다 (아약스를 통해). 효과적으로 내가이HTTP GET 요청에서 JSON 문자열을 가져 오는 방법

가야합니까 방법, HTTP 요청으로 JSON 문자열을 얻을 수있는 동일한 페이지를 원하는이 results.php 지금까지

  <?php 

     $link = mysql_connect('', '', ''); 
     if (!$link) { 
      die('Could not connect: ' . mysql_error()); 
     } 

     $db_selected = mysql_select_db('test', $link); 
     if (!$db_selected) { 
      die ('Can\'t use test : ' . mysql_error()); 
     } 

     $result = mysql_query("SELECT user_name FROM users"); 
     if (!$result) { 
      die('Invalid query: ' . mysql_error()); 
     } 


     $names = array(); 

     while ($row = mysql_fetch_assoc($result)) { 

      foreach ($row as $key => $val) { 

       $names[][$key] = $val; 
      } 
     } 

     if ($_GET['myvar'] == "done") 
     { 
      $ennames = json_encode($names); 
      echo $ennames; 
      exit(); 
     } 




     ?> 
     <script src="jquery-1.7.1.min.js"> 

     function getJSON() 
     { 
      $.getJSON("results.php", { myvar: "done" }, function(data) { 
       var namesHTML = ""; 

       $.each(data, function(key, val) { 
        namesHTML = namesHTML + val + "<br/>"; 
       }); 

       $("#divForNames").html(namesHTML); 
      }); 
      setTimeOut(getJSON, 5000); //the 5000 here means 5 seconds 
     } 
     </script> 

     <div id="divForNames"> 

     </div> 

답변

2

당신의 PHP는이에 필요한 유일한 조정은 추가 할 수있는 즉시 $ennames의 할당 후 if 문 :

폴링를 들어
if ($_GET['myvar'] == "specific-value-that-you-choose") 
{ 
    echo $ennames; 
    exit(); 
} 

, 당신은 클라이언트 측 스크립트의 일종 수행해야합니다 - 대부분 자바 스크립트, 그리고 가장 쉽게 jQuery를 작성. .getJSON() jQuery 함수와 setTimeOut()을 조사하여이 폴링을 수행 할 논리를 작성하십시오. 그것은 아마 다음과 같이 보일 것입니다 :

function getJSON() 
{ 
    $.getJSON("result.php", { myvar: "specific-value-that-you-choose" }, function(data) { 
     var namesHTML = ""; 

     $.each(data, function(key, val) { 
      namesHTML = namesHTML + val + "<br/>"; 
     }); 

     $("#divForNames").html(namesHTML); 
    }); 
    setTimeOut(getJSON, 5000); //the 5000 here means 5 seconds 
} 

을 그런 곳이 아닌 JSON 페이지의 HTML에, 당신은이에 당신이 $.getJSON() 함수 내에서 사용하는 것과 일치하는 설정 한 ID로 <div>를 (포함해야 예 : 비어있는 <div id="divForNames">이 필요하지만 환경 설정에 맞게 이름을 변경할 수 있습니다.

+0

무엇이 myvar입니까? –

+0

myvar는 사용할 수있는 변수 일뿐입니다. 데이터를 PHP 페이지에 추가 할 수 있습니다. 결과를 출력에 맞게 조정할 수 있습니다. 아무 것도 전달하지 않으면 JSON 인스턴스를 렌더링하려는 값을 선택하십시오. HTML 광고. 그래서'myvar' 대신에'renderMethod'를 사용하고 "JSON"을 사용할 수있는 "특정 값 - 당신 - 선택"대신 –

+0

을 쓰겠습니다. 제가 습득하려는 것을 더 잘 설명하기 위해 제 질문을 편집 할 것입니다 –

관련 문제