我只是将变量放在php中的javascript中,然后使用javascript函数..不需要jquery或AJAX。
但是,无论如何,您都需要具有子类别的外键。即-对于subcat表中的每个记录,您都需要给它一个catid以便进行引用…
<?php $db = new mysqli('localhost','user','password','dbname');//set your database handler $query = "SELECt id,cat FROM cat"; $result = $db->query($query); while($row = $result->fetch_assoc()){ $categories[] = array("id" => $row['id'], "val" => $row['cat']); } $query = "SELECt id, catid, subcat FROM subcat"; $result = $db->query($query); while($row = $result->fetch_assoc()){ $subcats[$row['catid']][] = array("id" => $row['id'], "val" => $row['subcat']); } $jsonCats = json_enpre($categories); $jsonSubCats = json_enpre($subcats);?><!docytpe html><html> <head> <script type='text/javascript'> <?php echo "var categories = $jsonCats; n"; echo "var subcats = $jsonSubCats; n"; ?> function loadCategories(){ var select = document.getElementById("categoriesSelect"); select.onchange = updateSubCats; for(var i = 0; i < categories.length; i++){ select.options[i] = new Option(categories[i].val,categories[i].id); } } function updateSubCats(){ var catSelect = this; var catid = this.value; var subcatSelect = document.getElementById("subcatsSelect"); subcatSelect.options.length = 0; //delete all options if any present for(var i = 0; i < subcats[catid].length; i++){ subcatSelect.options[i] = new Option(subcats[catid][i].val,subcats[catid][i].id); } } </script> </head> <body onload='loadCategories()'> <select id='categoriesSelect'> </select> <select id='subcatsSelect'> </select> </body></html>


