当前位置: 首页 > 面试题库 >

如何使用jQuery / AJAX和PHP / MySQL根据选择的第一个下拉列表填充第二个下拉列表?

齐甫
2023-03-14
问题内容

我正在尝试使用jQuery / AJAX和PHP /
MySQL创建一组动态的下拉框。当页面根据数据库中的值加载时,将填充第一个下拉框。第二个下拉框应根据第一个下拉框的选择显示一组值。我知道以前也有类似的问题问过,但是我没有找到适合我的情况的解决方案。

我的查询为第二个下拉列表生成了一个JSON编码的值列表,但该查询正在运行,但是在将其填充到实际的下拉表单元素时遇到了问题。关于我要去哪里的任何想法。

Javascript:

<script>
$().ready(function() {

    $("#item_1").change(function () {

      var group_id = $(this).val();

       $.ajax({
            type: "POST", 
            url: "../../db/groups.php?item_1_id=" + group_id, 
            dataType: "json",
            success: function(data){
                //Clear options corresponding to earlier option of first dropdown
                $('select#item_2').empty(); 
                $('select#item_2').append('<option value="0">Select Option</option>');
                //Populate options of the second dropdown
                $.each( data.subjects, function(){    
                    $('select#item_2').append('<option value="'+$(this).attr('group_id')+'">'+$(this).attr('name')+'</option>');
                });
                $('select#item_2').focus();
            },
            beforeSend: function(){
                $('select#item_2').empty();
                $('select#item_2').append('<option value="0">Loading...</option>');
            },
            error: function(){
                $('select#item_2').attr('disabled', true);
                $('select#item_2').empty();
                $('select#item_2').append('<option value="0">No Options</option>');
            }
        })

    }); 
});

</script>

HTML:

<label id="item_1_label" for="item_1" class="label">#1:</label>
<select id="item_1" name="item_1" />
    <option value="">Select</option>
    <?php
        $sth = $dbh->query ("SELECT id, name, level 
                             FROM groups
                             WHERE level = '1'
                             GROUP by name
                             ORDER BY name");                                   
        while ($row = $sth->fetch ()) { 
            echo '<option value="'.$row['id'].'">'.$row['name'].'</option>'."\n";       
        }
     ?>
</select>

<label id="item_2_label" for="item_2" class="label">#2:</label>
<select id="item_2" name="item_2" />                        
</select>

PHP:

<?php

require_once('../includes/connect.php');

$item_1_id = $_GET['item_1_id'];

$dbh = get_org_dbh($org_id);

$return_arr = array();

$sth = $dbh->query ("SELECT id, name, level 
                     FROM groups
                     WHERE level = '2'
                     AND parent = $item_1_id
                     GROUP by name
                     ORDER BY name");

while ($row = $sth->fetch ()) {

    $row_array = array("name" => $row['name'], 
                       "id" => $row['id']);

    array_push($return_arr,$row_array);     
}

echo json_encode($return_arr);

?>

样本JSON输出:

[{"name":"A","id":"0"},{"name":"B","id":"1"},{"name":"C","id":"2"}]

问题答案:

首先,您准备就绪的文档看起来有些不对,应该为$(document).ready(function(){});或可能为just
$(function(){});

其次,循环遍历JSON结果看起来也有些奇怪。尝试这样的事情:

$.each(data.subjects, function(i, val){    
   $('select#item_2').append('<option value="' + val.id + '">' + val.name + '</option>');
});


 类似资料:
  • 问题内容: 我对此一无所知。任何帮助对此将不胜感激! 对于经理和员工,我有两个下拉菜单。 “经理”下拉列表默认包含“经理”列表。 我想通过使用用户在Managers下拉列表中选择的Manager名称查询SQL Server数据库来用雇员名称填充雇员下拉列表。 因此,例如,如果某人在“经理”下拉列表中选择“汤姆”作为经理,则“员工”下拉列表应填充“员工”名称,其中经理=汤姆。 到目前为止,我有以下代

  • 问题内容: 我想创建两个下拉列表,类别和项目。 如果我选择名为car的类别之一,则项目下拉列表应包含Honda,Volvo和Nissan。 如果我选择一个名为phone的类别,则项目下拉列表应具有此iPhone,Samsung,Nokia。 我怎样才能做到这一点?我知道我无法使用纯HTML做到这一点。 问题答案: 工作演示 (带有jquery) 更新 :使用eval()能够添加所需的任意数量的数组

  • 问题内容: 我需要使用JavaScript根据下拉菜单A中的选择更改下拉菜单B的内容。没有涉及到数据库查询- 我事先知道应该在A中选择B的内容。我已经找到了一些使用AJAX的示例,但是由于没有涉及到数据库查询,所以没有必要。谁能为我指出一些示例代码以实现此目的? 问题答案: function configureDropDownLists(ddl1, ddl2) {

  • 根据第一个下拉列表项选择,我希望第二个下拉列表应该包含相关内容。在Java怎么能这样?例如,假设第一个下拉列表包含国家名称,第二个下拉列表包含国家名称。如果我从第一个下拉列表中选择一个特定的国家,比如“印度”,那么第二个列表应该只显示国家的相关邦,即“印度”的邦。并且这两个列表都是动态的。

  • 问题内容: 就像标题中所说的那样,尽管我对尚未付诸实践的理论很熟悉,但我仍在尝试使用jQuery,JSON和AJAX创建下拉菜单,因此,任何建议,演示代码段或教程都将不胜感激,因为我想开始最好的开始! 提前感谢! 问题答案: 您需要执行$ .getJSON调用以从document.load或其他一些事件http://api.jquery.com/jQuery.getJSON/上的服务器中获取jso

  • 问题内容: 我有两个选择: 如果我首先选择“水果”,该如何使用jQuery?第二个选择仅向我显示水果- 香蕉,苹果,橙子。如果我在第一个选择中选择“鸟”,则第二个选择仅显示“鸟”-老鹰,鹰。等等… 我试图用这段jQuery代码来做到这一点: 不幸的是,它几乎删除了所有内容,而且我不知道如何恢复一些选择。我也阅读了一些有关克隆的内容,但是在这种情况下我不知道如何使用它。 问题答案: $(“#sele