gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 06:48:08 25 4
gpt4 key购买 nike

我正在尝试使用 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 看起来有点不对劲,它应该是 $(document).ready(function(){}); 或者它可能只是 $(function (){});

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

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

关于php - 如何使用 jQuery/AJAX 和 PHP/MySQL 根据第一个下拉列表的选择填充第二个下拉列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8749326/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com