2012-05-11 20 views
2

ユーザー名などのデータを格納するmysqlデータベースがあります。結果をデータベースから取得し、JSON文字列にエンコードするresultというPHPファイルがあります。私は、ページのリロードなしで(ajax経由で)結果を出力するために同じPHPファイルを必要とします。効果的に私は、HTTPリクエストとしてJSON文字列を取得するには、同じページをしたい、どのように私はこのHTTP GETリクエストからJSON文字列を取得する方法

行くのですこれは、これまでのところ、あなたの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

results.phpです文の場合は、直ちに$ennamesの割り当て後に追加することです。

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

ポーリングでは、クライアント側のスクリプトのいくつかの種類行う必要があります - 最も可能性の高いJavaScriptを、最も簡単に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

私はその変数に何を渡しますか? –

+0

'myvar'は渡すために使うことができる変数ですあなたが渡す必要のあるものがない場合は、JSONをレンダリングすることを示す値を選択するだけですHTMLの広告。だから、 'myvar'の代わりに' renderMethod'を使うかもしれませんし、 "JSON"を使うかもしれない "特定値のあなたを選択する"の代わりに –

+0

私は私が達成しようとしていることをより良く説明するために私の質問を編集するつもりです –

関連する問題