这是我第一次尝试使用ajax来运行php查询。 我的主要目标是从我的数据库中提取数据而不刷新页面。我有一个下拉菜单,其中的选项是不同类别的产品。
<form id='theForm'>
<select name="category" id='category'>
<option value="">Select Food Category</option>
<option value="Dairy" >Dairy</option>
<option value="Fruits" >Fruits</option>
<option value="Grains" >Grains</option>
<option value="Nuts & Beans" >Nuts & Beans</option>
<option value="Oils" >Oils</option>
<option value="Other" >Other</option>
<option value="Protein Foods" >Protein Foods</option>
<option value="Supplements" >Supplements</option>
<option value="Vegetables" >Vegetables</option>
</select>
</form>
<div id='result'><div>
我正在尝试使用以下Ajax调用将下拉菜单的选定值发送到我的数据库的PHP查询,以将该类别的所有产品的名称返回到单独的下拉列表中。
AJAX致电:
$(document).ready(function(){
$("#category").change(function()
{
var selectedcat=$(this).val();
$.ajax({
url: "getfoods.php",
data: {q:selectedcat},
type:'POST',
success: function(data){
$('#result').html(data);
},
error:function(msg){
alert("Error: "+msg);
}
});//end ajax request
});//end category change
});//end doc ready
php代码如下:
<?php
$q = $_POST['q'];
$con=mysqli_connect("localhost","xxxxxx","xxxxxx","xxxxxx");
if (mysqli_connect_errno($con))
{
echo "Failed to connect to MySQL: ". mysqli_connect_error();
}
mysqli_select_db($con,productDB);
$sql="SELECT * FROM Products WHERE Category = '".$q."'";
$result = mysqli_query($con,$sql);
echo "<form method='post' id='form1'><select id='food_dd'>";
while($row = mysqli_fetch_array($result))
{
echo "<option value='". $row['FoodName']."'>".$row['FoodName']."</option>";
}
echo "</select></form>";
mysqli_close($con);
?>
经过大量研究试图找到例子,我仍然无法得到这个要求。我已经尝试用javascript进行这种类型的调用,但我真的很想使用JQuery。
提前谢谢! 凯尔
答案 0 :(得分:0)
使用,
$('#result').html(data);
而不是
$('#result').text(data);
答案 1 :(得分:0)
对于给您带来的不便,我深表歉意。我刚刚意识到php文件被移动到另一个目录中。代码现在正在运行。感谢您的时间。
答案 2 :(得分:0)
您应该阅读有关SQL注入的信息。客户的每一个输入都必须被视为敌对。现在的样子,打破SQL查询并做任何你喜欢的事情是孩子的游戏。它可能在技术上与理智的输入相关,但不会冒任何可能。
此外,你应该检查$ _POST ['q']是否存在,你应该对输入进行整理。另外阅读有关准备好的陈述和PDO。