我希望能够使用.post方法将变量发送到php文件,在那里我可以使用mysql查询从数据库中检索数据。到目前为止,我可以使用ajax发送有关变量的信息,但无法使用ajax从php脚本中检索输出。我对ajax非常不成熟,因此通过错误学习...感谢您查看我的查询。
如何在index.php
的div标签内显示php输出test.php
<?php require('../config/connection.php'); ?>
<?php
$value = $_POST['value'];
$query = mysqli_query($dbc, "SELECT DISTINCT class,product FROM prdct_categories WHERE class = '$value'");
while($list = mysqli_fetch_assoc($query)){
$prdct = $list['product'];
echo $prdct;
}
?>
ajax代码(index.php)
<div class="col-md-2" >
<?php
$test = $_GET['product'];
$q = "SELECT * FROM prdct_categories WHERE product = '$test' ";
$r = mysqli_query($dbc, $q);
$path_info = get_path();
$test1 = $path_info['call_parts'][1];
While($list = mysqli_fetch_assoc($r)) {?>
<li class="nav" <?php if($test1==$list['slugs']){echo'id="actives"';} ?>>
<a href="<?php echo $test;?>/<?php echo $list['slugs'];?> ">
<?php echo $list['subgroup']."(".$list['contains'].")".'<br/>';?></a></li>
<?php }?>
</div>
<div class="col-md-4" id="testing">
</div>
<script>
$(document).ready(function(){
$(".nav").click(function(){
$.post("test.php", {value:$(this).text()}, function(data) {$("#testing").text(data)} );
event.preventDefault();
});
});
</script>
答案 0 :(得分:1)
请改用此代码。您必须阻止在.nav
元素中单击的链接的默认操作:
$(".nav > a").click(function(e){ // see change here
e.preventDefault(); // added here e must match var e above.
$.post("test.php", {value:$(this).text()}, function(data) {$("#testing").text(data)} );
});
您的.nav
脚本应为:
<li class="nav<?php if($pageid==$nav['product']){echo ' active';}?>">
....
您当前的脚本不会使用class="nav"
创建任何元素,因此,选择器.nav
不会返回任何内容。 您当前的脚本还会创建多个具有相同ID的元素id="nav"
,这会使您的HTML无效.. 进行上述更改
答案 1 :(得分:0)
从ajax返回数据的表单。
<?php require('../config/connection.php');
header('Content-Type: application/json');
$value = $_POST['value'];
$prdct = array();
$query = mysqli_query($dbc, "SELECT DISTINCT product FROM prdct_categories WHERE class LIKE '{$value}'");
while($list = mysqli_fetch_assoc($query)){
$prdct[] = $list['product'];
}
$return = json_encode($prdct);
echo $return;
die;
?>
在javascript中替换:
$.post("test.php", {value:$(this).text()}, function(data) {$("#testing").text(data)} );
到
$.post("test.php", {value:$(this).text()}, function(data){
for(var k in data) {
$("#testing").append(data[k]+"<br />");
}
});
答案 2 :(得分:0)
使用$("#testing").html(data);
代替$("#testing").text(data);
<script>
$(document).ready(function(){
$(".nav").click(function(){
$.post("test.php", {value:$(this).text()}, function(data) {
$("#testing").html(data);
});
event.preventDefault();
});
});
</script>