Select2使用ajax和php基于第一个(多个)选择填充第二个字段


Select2 populate a second field based on first (multi)selection using ajax and php

如何实现这一点?我有第一个多选选项字段(parentfield),我需要根据第一个的值弹出第二个选项字段(childfield)

<select id="parentfield" name="parentfield[]" multiple>
    <option value="1">first value</option>
    <option value="2">second value</option>
    <option value="3">third value</option>
</select>

这个parentfield应该将值发布到php脚本,并且脚本将数据返回到子字段,如所示

<select id="childfield" name="childfield[]">
    <optgroup label="Group 1">
        <option value="1">first value child</option>
        <option value="2">second value child</option>
    </optgroup>
    <optgroup label="Group 2">
        <option value="3">third value child</option>
        <option value="4">fourth value child</option>
    </optgroup>
</select>

因此,我有了返回json的php代码,我想用它来构建值(Obs.:这是一个自定义组件中的joomla-ajax请求)

<?php
$materiaspost = implode(',',JRequest::getVar('disciplina'));
$materias = carregarcampos('SELECT * FROM #__marqueicerto_materias WHERE disciplina IN ('.$materiaspost.') AND assunto=0 ORDER BY materia ASC','list');
foreach ($materias as $materia) {
    $submaterias = carregarcampos('SELECT * FROM #__marqueicerto_materias WHERE assunto='.$materia['id_materia'].' ORDER BY materia ASC','list');
    foreach ($submaterias as $submateria) {
        // $vetor[$materia['materia']][$submateria['materia']] = array($submateria['id_materia']=>$submateria['materia']);
        $vetor[$materia['materia']][$submateria['id_materia']] = $submateria['materia'];
    }
}
?>

应该如何看待我的jquery来实现这一点?我必须修改我的php代码才能生成不同的json响应吗?

<html>
<head>
<title>Multiple drop down list </title>
<SCRIPT language=JavaScript>
function reload(form)
{
var val=form.cat.options[form.cat.options.selectedIndex].value;
self.location='yourcurrentfilename.php?cat=' + val ;
}
</script>
</head>
<body>
<?Php
$cat=$_GET['cat']; 
$quer2="SELECT category,cat_id FROM category order by category"; 
if(isset($cat)){
$quer1="SELECT DISTINCT subcategory FROM subcategory where cat_id=$cat order by subcategory"; 
}
echo "<select name='cat' onchange='"reload(this.form)'"><option value=''>Select one</option>";
while($cat_name = mysql_fetch_array($quer2)) {
if($cat_name['cat_id']==$cat){
    echo "<option selected value=".$cat_name['cat_id'].">".$cat_name['category']."</option>"."<BR>";
}
else{
    echo  "<option value=".$cat_name['cat_id'].">".$cat_name['category']."</option>";
    }
}
echo "</select>";
echo "<select name='subcat'><option value=''>Select Two</option>";
while($subcat_name = mysql_fetch_array($quer1)) {
echo  "<option value=".$subcat_name['subcategory'].">".$subcat_name['subcategory']."</option>";
}
echo "</select>";
?>
</body>
</html>