![](/img/trans.png)
[英]Onchange dropdown values query resp. tables - with php , mysql , ajax , jquery
[英]PHP AJAX update MySql query onChange from dropdown (filtering)
我在结合使用PHP和Ajax进行下拉更改时更新产品页面时遇到问题。 现在,当我从下拉菜单中选择一个项目时,它并没有更新查询。 查询本身工作正常。
我想要的是:当用户从多个下拉菜单中选择一个不同的选项时,查询将通过Ajax POST请求进行更新。 因此,通过选择下拉列表可以过滤结果。
HTML:
<select id="Gender">
<option value="" disabled selected>--Geslacht--</option>
<option value="1">Man</option>
<option value="2">Vrouw</option>
<option value="3">Beide</option>
</select>
PHP MySQL查询以选择数据:
$statements = '';
if (isset($_POST['GenderID'])) {
$gender_query = $_POST['GenderID'];
$statements .= " AND `product`.`gender_id` = '$gender_query' "; //condition for each property
}
$query = "SELECT `product`.`product_name` AS pname,
`product`.`product_img` AS pimg,
`brand`.`brand_name` AS bname
FROM
`product`
INNER JOIN
`brand`
ON
(`product`.`brand_id`=`brand`.`brand_id`)
WHERE
`product`.`active` = '1' $statements";
$result2 = $conn->query($query);
if ($result2->num_rows > 0) {
// output data of each row
while($row = $result2->fetch_assoc())
{
echo'
<div class="col-lg-4">
<div class="card">
<div class="view overlay">
<a href="#">
<img src="products/',$row["pimg"],'" class="img-fluid">
</a>
</div>
<div class="card-body">
<h4 class="card-title">',$row["bname"],'</h4>
<p class="card-text">',$row["pname"],'</p>
<a href="#" class="btn btn-outline-success my-2 my-sm-0">Button</a>
</div>
</div>
</div>';
}
}
JS Jquery / Ajax:
$(document).ready(function(){
$("#Gender").change(function () {
var gender = $("#Gender").val();
jQuery.ajax({
type: "POST",
data: {GenderID: gender},
success: function(data){
if(data.success == true){
alert('success');
}
}
});
});
});
这可能是我犯的最小错误。 任何帮助深表感谢。
更新
我添加了执行Mysql查询的代码。
我认为您在这里错了。
GenderID
的''
一个小错误。 而且您没有通过url
。
$(document).ready(function(){
$("#Gender").change(function () {
var gender = $("#Gender").val();
jQuery.ajax({
url: "www.some_url.com" // Send the data with your url.
type: "POST",
data: {'GenderID': gender}, // Here you have written as {GenderID: gender} , not {'GenderID': gender}
success: function(data){
if(data.success == true){
alert('success');
}
}
});
});
});
您也有的更改.
不如,
如下所示。
echo' <div class="col-lg-4">
<div class="card">
<div class="view overlay">
<a href="#">
<img src="products/'.$row["pimg"].'" class="img-fluid">
</a>
</div>
<div class="card-body">
<h4 class="card-title">'.$row["bname"].'</h4>
<p class="card-text">'.$row["pname"].'</p>
<a href="#" class="btn btn-outline-success my-2 my-sm-0">Button</a>
</div>
</div>
</div>';
您不调用脚本(缺少url参数)。
$("button").click(function(){
$.ajax({
url: "demo_test.txt",
success: function(result){
$("#div1").html(result);
}});
});
编辑:错误处理可以告诉你什么地方出了问题
$("button").click(function(){
$.ajax({
url: "demo_test.txt",
success: function(result){
$("#div1").html(result);
},
error: function (error) {
console.log(error);
}
});
});
你可以那样做!
<?php
if(isset($_POST['gender'])) {$variable = $_POST['gender'];} else {$variable=0;}
echo $variable;?>
<div id="result">
<form action="" method="POST" id="form">
<select id="gender" name="gender">
<option value="" disabled selected>--Geslacht--</option>
<option value="1">Man</option>
<option value="2">Vrouw</option>
<option value="3">Beide</option>
</select>
<button type="submit" onClick="post()">Submit</button>
</form>
</div>
<script language="JavaScript" type="text/javascript">
function post() {
var param = '&gender='+gender;
$.ajax({
url : 'pagename.php',
type : 'POST',
data : param,
dataType : 'html'
}).done(function(html) {$('#result').html(html)}) ;
}
</script>
您是否获得了正确的帖子数据? 通过AJAX将其解析为另一个文件后,post变量实际上包含什么?
引起我注意的一件事可能是错误的,是您获取<select>
的值的方式。 据我所知,您应该告诉它获取select的选定值。
var gender = $("#Gender").val();
需要是
var gender = $("select#Gender option:selected").val();
这样,您就告诉了jquery变量要获取的值。
如果您在此之后仍然遇到问题,请告诉我,如果发现其他错误,我将编辑答案。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.