每当用户单击下拉列表时,刷新下拉选项

时间:2019-04-04 08:12:42

标签: php jquery html mysql ajax

我用html和php / mysql创建了一个简单的下拉列表

<select name="location_id" id="location_id" class="form-control">
 <?php
   $sql = "SELECT * FROM locations";
   $result = mysqli_query($conn, $sql); 
   while($row=mysqli_fetch_assoc($result)){ ?>

      <option value="<?php echo $row['location_id'];?>">
       <?php echo $row['location_name'];?></option>             
 <?php } ?>
</select>



在从另一页插入新记录之前,它一直很好。我需要刷新页面以在下拉列表中获取新插入的记录。

在我当前的应用程序中,每当用户单击下拉列表时,都需要刷新下拉选项,而不刷新整个页面。这些选项应从mysql数据库中实时获取。

我已经找到了解决方案,但找不到相似的解决方案。

1 个答案:

答案 0 :(得分:3)

要仅刷新页面的一部分,您需要使用JavaScript(具体来说是AJAX)。

Ajax允许您发送HTTP请求和更新页面元素,而无需重新加载整个页面。

您可以尝试这样的事情

<script>
function refresh_items() {
  var xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
  document.getElementById("location_id").innerHTML =
  this.responseText;
}
};
xhttp.open("GET", "refresh_list.php", true);
xhttp.send();
}
</script>

<select name="location_id" id="location_id" class="form-control" onclick="refresh_items();">
</select>

现在您已经制作了客户端脚本,希望您在refresh_list.php上使用服务器端PHP,使其看起来像这样

 <?php
   //all your SQL settings and stuff here
   $sql = "SELECT * FROM locations";
   $result = mysqli_query($conn, $sql); 
   while($row=mysqli_fetch_assoc($result)){ ?>

      <option value="<?php echo $row['location_id'];?>">
       <?php echo $row['location_name'];?></option>             
 <?php } ?>