【发布时间】:2021-04-07 14:01:26
【问题描述】:
我正在尝试使用自定义代码在 WordPress 中创建成本估算表单,并且我是 PHP、AJAX 和 MYSQL 的初学者,因此我需要以下查询的帮助。
基本上需要为汽车品牌和汽车型号创建一个依赖下拉列表,所以我创建了一个 dab 表调用wp_cost_estimation,其中包含id、make、make_id、model。见下图。
因此,如果用户在下一个下拉菜单中选择讴歌,它应该不会重复显示所有讴歌车型。 我尝试了下面的代码。 请纠正我的错误。
cost_estimation_template.php
<select placeholder="Select Make" name="make" id="make">
<option disabled="" selected="">--Select Make--</option>
<?php
include get_theme_file_path( '/data.php' );
$makes = loadMake();
foreach ($makes as $make) {
echo "<option id='".$make['id']."' value='".$make['id']."'>".$make['make']."</option>";
}
?>
</select>
<select placeholder="Select Model" name="model" id="model">
<option disabled="" selected="">--Select Model--</option>
</select>
data.php
if(isset($_POST['aid'])) {
$db = new DbConnect;
$conn = $db->connect();
$stmt = $conn->prepare("SELECT model_name FROM wp_cost_estimation WHERE make_id = " . $_POST['aid'] GROUP BY model_name);
$stmt->execute();
$models = $stmt->fetchAll(PDO::FETCH_ASSOC);
echo json_encode($models);
}
function loadMake() {
$db = new DbConnect;
$conn = $db->connect();
$stmt = $conn->prepare("SELECT MIN(id) AS id, make FROM wp_cost_estimation GROUP BY make");
$stmt->execute();
$make = $stmt->fetchAll(PDO::FETCH_ASSOC);
return $make;
}
AJAX 代码:
<script type="text/javascript">
$(document).ready(function(){
$("#make").change(function(){
var aid = $("#make").val();
$.ajax({
url: '<?php echo get_theme_file_path('/data.php'); ?>',
method: 'post',
data: 'aid=' + aid
}).done(function(model){
console.log(model);
model = JSON.parse(model);
$('#model').empty();
model.forEach(function(models){
$('#model').append('<option>' + models.model_name + '</option>')
})
})
})
})
</script>
请帮帮我。
【问题讨论】:
-
什么不起作用?你有什么错误吗?
-
到目前为止,它没有显示任何错误,但它甚至没有显示我想要的结果
-
我认为问题出在
get_theme_file_path('/data.php')。你能说明一下这个函数的返回值吗? -
你也可以在这里看到一些例子 - gist.github.com/devinsays/69a305053e35a10584f94d6011bba2d6