php - 如何从 HTTP GET 请求中获取 JSON 字符串

标签 php ajax json httpwebrequest

我有一个mysql数据库,用于存储用户名等数据。我有一个名为 result 的 PHP 文件,它从数据库中检索结果并将其编码为 JSON 字符串。然后,我希望相同的 PHP 文件能够输出结果,而无需重新加载页面(通过 ajax)。实际上,我希望同一页面获取 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>

最佳答案

为此,您的 PHP 需要的唯一调整是在 $ennames 赋值之后立即添加一条 if 语句。 :

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 设置为与您在 $.getJSON() 中使用的 ID 相匹配函数(在本例中,我需要一个空的 <div id="divForNames"> 但您可以更改名称以满足您的喜好。

关于php - 如何从 HTTP GET 请求中获取 JSON 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10552452/

相关文章:

bluehost 上的 php SESSION 变量

php - 处理格式错误的时间

php - 在 js 上调用 php

javascript - 将数据传递给 Jquery Ajax 的正确方法

Javascript 定时器在按键时重新启动?

python - 将 MultiDict 转换为正确的 JSON

php - 导入任何 custom.js 文件时 JSON 提要中断

php - 从 db phalcon 检索标签

javascript - 选择...从...使用 Ajax 的位置

java - Ajax 调用中返回 null json