2

ユーザー名などのデータを格納する mysql データベースがあります。データベースから結果を取得し、JSON 文字列にエンコードする result という PHP ファイルがあります。次に、ページをリロードせずに (ajax を介して) 同じ PHP ファイルで結果を出力する必要があります。事実上、同じページで JSON 文字列を HTTP リクエストとして取得したいのですが、どうすればよいですか

ここまでは 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>
4

1 に答える 1

2

これに必要な PHP の唯一の調整は、 の割り当ての直後に if ステートメントを追加することです$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 のどこかに<div>、関数内で使用するものと一致するように設定された idを含む a を含める必要があり$.getJSON()ます (この場合、空<div id="divForNames">が必要ですが、名前を自分に合わせて変更できます)環境設定。

于 2012-05-11T13:55:46.207 に答える