你就可以生產基於數據庫這種結構如果預取:
shoes array(3) {
['Hi-Top'] => array(2) {
[1] => 'Blue',
[7] => 'Yellow'
}
['Loafer'] => array(3) {
[2] => 'Black',
[5] => 'Brown',
[6] => 'Red',
}
['Brogue'] => array(2) {
[3] => 'Brown',
[4] => 'Black'
}
}
,並在HTML生成:
<select name="type">
<?php foreach($shoes as $shoeType => $shoeColors): ?>
<option value="<?= $shoeType ?>" <?php if(isset($_POST['type']) && $_POST['type'] == $shoeType) echo 'selected="selected"'?>><?= $shoeType?></option>
<?php endforeach; ?>
</select>
<select name="color">
<?php if (isset($_POST['type']) foreach($shoes[$_POST['type']] as $k => $v): ?>
<option value="<?= $k ?>" <?php if(isset($_POST['color']) && $_POST['color'] == $k) echo 'selected="selected"'?>><?= $v ?></option>
<?php endforeach; ?>
</select>
現在,如果你可以節省$ _ POST [「型」]和$ _POST ['color']在會話中稍後使用,您根本不需要JS,即使瀏覽器禁用了JS,代碼也能正常工作。
但是如果你喜歡,你可以使用JS。 Json對它進行編碼並在你的javascript中使用它。而不是唯一的方法是使用AJAX。
var shoes = <?= json_encode($shoes) ?>
AJAX會產生這種動態負載。 – Rasclatt 2014-10-02 19:53:00
您可以重新加載'shoe_type'上的頁面並加載'shoe_color',否則您需要使用客戶端,即。 javascript和可能的ajax,來改變'shoe_color'。 – Sean 2014-10-02 19:54:58