【发布时间】:2017-10-17 11:00:43
【问题描述】:
我正在尝试根据第一个选择框的选择来填充选择框,但我在执行此操作时遇到了一些麻烦。根本没有任何反应。
到目前为止我所拥有的(这是我的页脚):
<script src="./plugins/bower_components/jquery/dist/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("select.category").change(function(){
var selectedCategory = $(".category option:selected").val();
$.ajax({
type: "POST",
url: "../inc/get_subcat.php",
data: { category : selectedCategory }
}).done(function(data){
$("#subcategory").html(data);
});
});
});
</script>
带有 div 的页面位于 /pages/file.php:
<div class="col-md-6">
<div class="form-group">
<label class="control-label">SubCategory</label>
<div id="subcategory"> </div>
</div> </div>
执行查询的文件在另一个文件夹中(inc/get_subcat.php):
<?php
include("config.php");
if(isset($_POST['category'])){
$cat = validar($_POST['category']);
$query = "SELECT id, subcategory FROM subcategories WHERE catid = ?";
#Prepare stmt or reports errors
($stmt = $mysqli->prepare($query)) or trigger_error($mysqli->error, E_USER_ERROR);
#Execute stmt or reports errors
$stmt->bind_param("i", $cat);
$stmt->execute() or trigger_error($stmt->error, E_USER_ERROR);
#Save data or reports errors
($stmt_result = $stmt->get_result()) or trigger_error($stmt->error, E_USER_ERROR);
#Check if are rows in query
if ($stmt_result->num_rows>0) {
echo "<select class='form-control' id='subcategory' name='subcategory'>";
# Save in $row_data[] all columns of query
while($row_data = $stmt_result->fetch_assoc()) {
# Action to do
echo "<option value='$row_data[id]'>$row_data[category]</option>";
}
echo "</select>";
}
$stmt->close();
}
?>
有人可以帮助我尝试修复此错误吗?尽管尝试了几个小时仍无法修复。
谢谢!
编辑: 这是带有所有选择框的 HTML 代码:
<div class="row">
<div class="col-md-6">
<div class="form-group">
<label class="control-label">Category</label>
<select class='form-control' id='category' name='category'><option value='1'>Categoria 1</option><option value='2'>Categoria 2</option></select> </div>
</div>
<div class="col-md-6" id="subcategory">
</div>
</div>
【问题讨论】:
-
您的
$_POSTURL 有效吗?当你去它,或者用 Postman 测试它时,它会加载任何东西吗? AJAX 请求是否处理?使用您的浏览器工具检查以确保请求已成功处理,以便确定问题的位置。 -
这个方法有什么作用
validar()?错误报告会返回什么? -
我没有报告任何错误。 "validar" 只是 espace 字符串等等以避免 SQL 注入。似乎脚本没有调用。我没有收到任何错误。如果我转到“get_subcat”页面并为 $cat 定义一个值,它会删除正确的值。
-
网络检查器网络窗格显示什么?
-
它只显示加载页面加载的文件。在这种情况下,所有 CSS 和 JS(包括 jquery)。如果我更改第一个选择框,则不会发生任何事情。我的第一个选择框代码:
标签: php jquery html mysql ajax