PHP AJAX相互依赖下拉列表不起作用

时间:2019-01-15 11:51:18

标签: php jquery ajax

我正在尝试使用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循环下返回列表,并且我的选择框最终为空白。这是什么问题?请帮忙。

1 个答案:

答案 0 :(得分:2)

将$ brd_name更改为$ brd_title

echo "<option value=".$brd_id.">".$brd_name."</option>";
echo "<option value=".$brd_id.">".$brd_title."</option>";