似乎大多数链式选择都是使用JSON完成的,但不幸的是,使用我的数据库完成此操作对我来说更方便。它几乎就在那里,但由于某种原因,第二个选择框没有正确加载。相反,它正在加载它所在页面的整个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”的同一文件夹中的文件。这是该文件中的内容(奇怪的是,$ _POST ['id']似乎也没有附加到此文件,尽管它是在JS中创建的):
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/并且它在很大程度上得到了我,但不幸的是数据似乎没有加载到第二个选择框中。
感谢您的期待!
答案 0 :(得分:0)
好的,所以我想出了这个。希望这可以帮助将来遇到同样问题的人。
对文件的调用,select_type.php不正确。呼叫必须是绝对的而不是相对的。由于我使用wordpress,我只是将行改为:
$.get("<?php echo get_template_directory_uri() . '/includes/select-model.php'; ?>", {id:id}, function(data){
您会注意到我将$ .post更改为$ .get。我不确定为什么帖子不起作用,但似乎工作正常。我只是使用$ _GET [&#39; id&#39;]在select_type.php中检索我的值。
希望这有助于某人!