我有3个下拉框,这取决于彼此的选择。第一次下拉工作正在进行,但第二次和第三次下降不会填充任何内容。这是形式:
<fieldset>
<legend style="color: blue">Tour Details</legend>
<li id="li_11" >
<div><label for="element_11">Tour Type </label>
<select id="element_11" name="element_11">
<option value="">--Select--</option>
<?php if (!empty($list)) { ?>
<?php foreach($list as $row) { ?>
<option value="<?php echo $row['id']; ?>">
<?php echo $row['name']; ?>
</option>
<?php } ?>
<?php } ?>
</select>
<label style="color: red; font-style: italic;"></label>
</div>
</li>
<li id="li_12" >
<div><label for="element_12">Country</label>
<select id="element_12" name="element_12" class="update" disabled="disabled">
<option value="">----</option>
</select>
</div>
</li>
<li id="li_13" >
<div><label for="element_13">Destination</label>
<select id="element_13" name="element_13" class="update" disabled="disabled">
<option value="">----</option>
</select>
</div>
</li>
这是表格顶部的PDO代码
<?php
try {
$objDb = new PDO('mysql:host=localhost;dbname=jurassicbase5', 'root', '');
$objDb->exec('SET CHARACTER SET utf8');
$sql = "SELECT * FROM `destination` WHERE `master` = 0";
$statement = $objDb->query($sql);
$list = $statement->fetchAll(PDO::FETCH_ASSOC);
} catch(PDOException $e) {
echo 'There was a problem';
}
?>
这是处理onchange事件的update.php文件
<?php
if (!empty($_GET['id']) && !empty($_GET['value'])) {
$id = $_GET['id'];
$value = $_GET['value'];
try {
$objDb = new PDO('mysql:host=localhost;dbname=jurassicbase5', 'root', '');
$objDb->exec('SET CHARACTER SET utf8');
$sql = "SELECT * FROM `destination` WHERE `master` = ?";
$statement = $objDb->prepare($sql);
$statement->execute(array($value));
$list = $statement->fetchAll(PDO::FETCH_ASSOC);
if (!empty($list)) {
$out = array('<option value="">Select one</option>');
foreach($list as $row) {
$out[] = '<option value="'.$row['id'].'">'.$row['name'].'</option>';
}
echo json_encode(array('error' => false, 'list' => implode('', $out)));
} else {
echo json_encode(array('error' => true));
}
} catch(PDOException $e) {
echo json_encode(array('error' => true));
}
} else {
echo json_encode(array('error' => true));
}
任何人都可以看到问题所在吗?请帮助我,因为我已经在这几个小时。如果您需要查看此表单的数据库表,我可以向您显示。
这是处理onchange事件的javascript代码
var formObject = {
run : function(obj) {
if (obj.val() === '') {
obj.nextAll('.update').html('<option value="">----</option>').attr('disabled', true);
} else {
var id = obj.attr('id');
var v = obj.val();
jQuery.getJSON('mod/update.php', { id : id, value : v }, function(data) {
if (!data.error) {
obj.next('.update').html(data.list).removeAttr('disabled');
} else {
obj.nextAll('.update').html('<option value="">----</option>').attr('disabled', true);
}
});
}
}
};
$(function() {
$('.update').live('change', function() {
formObject.run($(this));
});
});