ほとんどの連鎖選択は JSON で実現されているようですが、残念ながら、これを実現するにはデータベースを使用する方がはるかに便利です。ほぼそこにあるのですが、何らかの理由で 2 番目の選択ボックスが正しく読み込まれていません。代わりに、そのページの HTML 全体をロードしていますが、その理由はわかりません。
これが私が得たものです(make_list()とmodel_list()は、それぞれの基準に適した配列を返す、以前に作成した関数であることに注意してください)
JS:
$(document).ready(function(){
$("select#type").attr("disabled","disabled");
$("select#category").change(function(){
$("select#type").attr("disabled","disabled");
$("select#type").html("<option>loading...</option>");
var id = $("select#category option:selected").attr('value');
$.post("select_type.php", {id:id}, function(data){
$("select#type").removeAttr("disabled");
$("select#type").html(data);
});
});
$("form#select_form").submit(function(){
var cat = $("select#category option:selected").attr('value');
var type = $("select#type option:selected").attr('value');
if(cat>0 && type>0)
{
var result = $("select#type option:selected").html();
$("#result").html('your choice: '+result);
}
else
{
$("#result").html("you must choose two options!");
}
return false;
});
});
HTML/PHP:
<form id="select_form">
<div class="clearfix">
<select id="category">
<option value="">Any</option>
<?php foreach ( make_list() as $make ) { ?>
<option value="<?php echo $make ?>"><?php echo $make ?></option>
<?php } ?>
</select>
</div>
<div class="clearfix">
<select id="type">
<option value="">Any</option>
</select>
</div>
</form>
最初の選択が変更されると、JQuery は同じフォルダー内の「select_type.php」というファイルを参照する必要があります。そのファイルの内容は次のとおりです(奇妙なことに、JSで作成されているにもかかわらず、 $_POST['id'] もこのファイルに追加されていないようです):
foreach ( model_list($_POST['id']) as $model ) {
echo '<option value="'.$model.'">'.$model.'</option>';
}
私はこのプロジェクトのためにこのリソースを使用してきました: http://www.yourinspirationweb.com/en/how-to-create-chained-select-with-php-and-jquery/残念ながら、データはその 2 番目の選択ボックスに読み込まれていないようです。
ご覧いただきありがとうございます。