在使用ajax用PHP和POST显示数据时遇到了麻烦


having trouble using ajax to display the data with PHP and POST

我试图运行一个php脚本,从一个按钮的点击从数据库拉数据。我想使用ajax,这样页面就不会刷新。我已经测试了使用正常的post/提交与页面刷新,它的工作原理,但我有麻烦使用ajax来显示数据。这是我的代码:

  <form method="get" id="ghosts">
         <div id=rightc>
              <h7>Select Hosts:</h7>
     <br></br>
      <select id="group" name="group" onchange='this.form.submit()'>
           <?php
        $link=mysql_connect($mysqlserver, $username, $password) or die ("Error connecting to mysql server: ".mysql_error());
        mysql_select_db($dbname, $link) or die ("Error selecting specified database on mysql server: ".mysql_error());
        $gquery=" SELECT groupname FROM groups";
        $gresult=mysql_query($gquery) or die ("Query to get data from firsttable failed: ".mysql_error());
        while ($grow=mysql_fetch_array($gresult)) {
        $groupname=$grow["groupname"];
            echo "<option>$groupname</option>";
        }
        ?>
    </select>
     <input type="hidden" name="ghosts" value="1" />
     <noscript> <input type="submit" name="ghosts" id="group" value="Choose Group" /></noscript>
  </form>

如果您的search.php文件返回HTML,并且假设ajax可以工作(看起来应该可以),那么您正在尝试将内容放入不存在的元素中。

$(".result").html(data); 

它需要存在于页面上。把这个添加到某个地方。

<div class="result"></div>

然而,你的PHP不返回任何数据,因为这个条件if(isset($_POST['ahosts']))请求一个不在表单中的参数,并使用错误的请求方法。

你使用GET ($.get()),所以在PHP中它需要读取

if(isset($_GET['ahosts']))

并将其添加到表单中,给按钮一个名称

<input type="hidden" name="ahosts" value="1" />
<!-- or -->
<button type="submit" name="ahosts" />

我想你犯了一个错误:

if(isset($_POST['ahosts']))

您检查isset()是否POST请求,但实际上您发送GET请求…

阅读文档https://api.jquery.com/jquery.get/

所以如果你把代码改成:

 if(isset($_GET['ahosts']))

这将返回true,现在你将有一个响应