post 加载页面时相关下拉菜单的值

post value to dependent dropdown menu when page is loaded

搜索该站点后,找到了一种使用 ajax 轻松制作依赖下拉菜单的方法(之前使用 "kartik dependent dropdown" 插件,但它不适用于 select2,因此需要自定义解决方案) .当从父下拉菜单中选择任何选项时,我可以使依赖(子)下拉菜单完美工作,但无法在加载页面时显示依赖下拉菜单(需要先单击父下拉菜单中的某个选项)。这是代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Dynamic Dependent Select Box</title>
<link href="css/styles.css" rel="stylesheet" />
<script src="ajax/jquery.min.js"></script>
<script src="ajax/plugins/forms/select2.min.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
$(".parent1").select2();
$(".child1").select2();

$(".parent1").change(function()
{
var id=$(this).val();
var dataString = 'id='+ id;

$.ajax
({
type: "POST",
url: "test_ajax.php",
data: dataString,
cache: false,
success: function(html)
{
$("select.child1").html(html);
}
});
});
});
</script>
</head>
<body>
<select name="parent1" class="parent1">
<option value="1">something</option>
<option value="2" selected>something good</option>
<option value="3">who cares</option>
</select>
<select name="child1" class="child1">
</select>
</body>
</html>

这里是 test_ajax.php 来源:

    <?php
if (!isset($_POST['id']))
{
    exit();
}
else
{
    echo "<option value=\"".$_POST['id']."\">".$_POST['id']."</option>";
}
?>
<option value="aaa">aaa</option><option value="bbb">bbb</option><option value="ccc">ccc</option>

我应该如何修改代码,以便在加载页面时将初始值 (<option value="2" selected>something good</option>) 发布到 test_ajax.php(这样子下拉列表在页面加载时不为空)?

在此页面上找到了一些示例,但它们适用于版本 3.x 的 select2,示例中使用的函数在版本 4.x

中已弃用

您可以手动触发 change 事件,这应该会导致您的 AJAX 请求被发送。

if ($('select.parent1').val()) {
  $('select.parent1').trigger('change');
}