【问题标题】:Dynamic Dependent Dropdown动态相关下拉
【发布时间】:2016-08-12 11:22:29
【问题描述】:

我有一个从现有数据库中提取一些下拉数据的表单。我一直在研究第二个下拉列表,它引用第一个下拉列表以从不同的数据库获取更具体的信息,但是看起来我的代码在某个地方被破坏了。第一个下拉列表填充得很好,但是当我选择“经理”时,站点下拉列表变为空白,我什至失去了“选择站点”选项。

任何帮助将不胜感激。

<script src="https://code.jquery.com/jquery-2.1.1.min.js" type="text/javascript"></script>
    <script>
    function getSite(val) {
        $.ajax({
        type: "POST",
        url:"get_site.php",
        data:'manager_id='+val,
        success: function(data){
            $("#site-list").html(data);
        }
        });
    }
    </script>

html/php

Manager<br/>
<select name="manager_id" onChange="getSite(this.value);">
<option value="">Select Manager</option>
<?php
$results = mysql_query("SELECT * FROM _managers");
while ($row_unit = mysql_fetch_array($results)){
?>
<option value="<?php echo $row_unit["id"]; ?>"><?php echo $row_unit["company"]; ?></option>
<?php
}
?>
</select>
<br/><br/>
        Site<br/>
<select name="site_id" id="site-list">
<option value="">Select Site</option>
</select>

get_site.php

<?php
include('includes/connect-db.php');

if(!empty($_POST["manager_id"])) {
    $manager_id = $_POST["manager_id"];
    $results = mysql_query("SELECT * FROM _sites WHERE manager_id = $manager_id");
?>
    <option value="">Select Site</option>
<?php
    while ($row_site = mysql_fetch_array($results)){
?>
    <option value="<?php echo $row_site["id"]; ?>"><?php echo $row_site["site_name"]; ?></option>
<?php
    }
}
?>

【问题讨论】:

  • $("#site-list").append(data);
  • 感谢@Saurabh 的帮助。我进行了调整,但仍然没有从“get_site.php”文件中获取我的值。虽然现在“选择站点”保留在站点下拉列表中。
  • 这是因为您在 while 循环中回显。首先将所有数据放入数组中,然后回显该变量。我个人更喜欢 echo 使用json_encode

标签: php jquery drop-down-menu


【解决方案1】:

根据评论中的讨论。

我进行了调整,但仍然没有从 “get_site.php”文件。尽管现在“选择站点”仍保留在站点中 下拉菜单。

假设您从 MySQL 服务器获取正确的数据,请在 get_site.php 中进行一些更改,如下所示。

get_site.php

<?
include 'includes/connect-db.php';

if ((!empty($_POST["manager_id"])) && (isset($_POST["manager_id"])))
{
    $manager_id = $_POST["manager_id"];
    $results = mysql_query("SELECT * FROM _sites WHERE manager_id = '{$manager_id}'");
    $options = "<option value=''>Select Site</option>";
    while ($row_site = mysql_fetch_assoc($results))
    {
        $options .= "<option value='{$row_site['id']}''>{$row_site['site_name']}</option>";
    }
    return $options; // I personally prefer to echo using json_encode and decode it in jQuery
}
?>

上面的代码应该给你你想要的数据。 希望这能解决您的问题。如果您有任何困难,请发表评论。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-25
    • 2020-06-29
    • 1970-01-01
    • 2021-03-04
    • 2013-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多