我正在尝试使用AJAX和PHP创建一个相互依赖的下拉列表。问题是,无论何时更改第一个下拉列表中的菜单,它都不会从while循环中返回结果。但是,它返回另一个语句。为了清楚起见,请通过我的代码进行讨论。
HTML
<tr>
<th class="col-sm-4">Category</th>
<td>
<select id="category" class="form-control">
<?php while($c = $category->fetch()){ extract($c); ?>
<option value="<?php echo $cat_id; ?>"><?php echo $cat_name; ?></option>
<?php } ?>
</select>
</td>
</tr>
<tr>
<th class="col-sm-4">Board</th>
<td>
<select id="board" class="form-control">
<option value="">Select Board</option>
</select>
</td>
</tr>
AJAX
$(document).ready(function() {
$('#category').change(function(){
var dataString = {
category: $('#category').val(),
type: 'loadBoard'
};
if(dataString.category > 0){
$.ajax({
type: 'post',
url: 'processes/settings.php',
data: dataString,
cache: true,
success: function(html){
$('#board').html(html);
}
});
}
});
});
processes / settings.php
$category = (!empty($_POST['category']))?$_POST['category']:null;
$type = (!empty($_POST['type']))?$_POST['type']:null;
if($_POST){
if($type == 'loadBoard'){
$stmt = $pdo->prepare("SELECT brd_id, brd_title FROM forum_boards WHERE brd_cat = :cat");
$stmt-> bindValue(':cat', $category);
$stmt-> execute();
$rc = $stmt->rowCount();
if($rc > 0){
while($row = $stmt->fetch()){ extract($row);
echo "<option value=".$brd_id.">".$brd_name."</option>";
}
}else{
echo $html = "<option value=''>No Board Exists</option>";
}
}
}
这里的问题是,当条件if($rc > 0){
为假时,它会正确返回else
语句。这意味着它将正确返回No Board Exists
。但是条件if($rc > 0){
为真,它不会在while循环下返回列表,并且我的选择框最终为空白。这是什么问题?请帮忙。
答案 0 :(得分:2)
将$ brd_name更改为$ brd_title
echo "<option value=".$brd_id.">".$brd_name."</option>";
echo "<option value=".$brd_id.">".$brd_title."</option>";