我有一个功能,根据下拉列表中选择的值显示一定数量的产品。这是通过ajax完成的,但是为了使一切正常工作,我需要传递一个变量。
在 catalog.php 上,我得到了:
$pid = $productcatcr[0]['id'];
其中包含页面ID。
在同一页面上,我收到了下拉列表:
<select class="form-control showcount" name="showcount" id="showcount">
<option value="100" selected>Alle</option>
<option value="2">2</option>
<option value="4">4</option>
<option value="8">8</option>
<option value="12">12</option>
<option value="16">16</option>
<option value="20">20</option>
</select>
ajax.js :
中的效果如下$("#showcount").on('change', function() {
$.post("ajax/getproducts.php", {start: ($("#showcount").val() - 4), end: $("#showcount").val()}, function(result){
$("#productviewajax").html(result);
});
});
最后在 getproducts.php 中,我使用以下查询:
$product = "SELECT * FROM `web_content` WHERE `catid` = ".$conn->real_escape_string($_GET['id'])." AND state = 1 order by ordering LIMIT ".$_POST['end']."";
我需要从初始页面,通过ajax到查询发布id。最好的方法是什么?我的ajax不是很好。
我在初始页面上有另一个过滤器,我可以在其中传递一个url中的变量,但是另一个选项元素不能像那样工作。
示例:
<option value="highlow" data-post-url="prijshooglaag.php?id='.$pid.'">Prijs: Hoog naar laag</option>
答案 0 :(得分:1)
使用类名称创建一个hidden input
作为pageId(不是必须使用相同的类名,但是如果您在此处更改类名。请在此处更改Ajax代码id:$(".pageId").val()
。两者都是相关的。)< / p>
<强> catalog.php 强>
<?php
$pid = $productcatcr[0]['id'];
?>
<input type='hidden' value='<?php echo $pid;?>' class='pageId'>
<select class="form-control showcount" name="showcount" id="showcount">
<option value="100" selected>Alle</option>
<option value="2">2</option>
<option value="4">4</option>
<option value="8">8</option>
<option value="12">12</option>
<option value="16">16</option>
<option value="20">20</option>
</select>
使用pageId
获取当前页面ID。并将其传递给 getproducts.php 页面。
<强>的Ajax 强>
$("#showcount").on('change', function() {
$.post("ajax/getproducts.php", {start: ($("#showcount").val() - 4), end: $("#showcount").val(),id:$(".pageId").val()}, function(result){
$("#productviewajax").html(result);
});
});
getproducts.php
而不是$_GET['id']
使用$_POST['id']
作为AJAX中使用的$.post
。
$product = "SELECT * FROM `web_content` WHERE `catid` = ".$conn->real_escape_string($_POST['id'])." AND state = 1 order by ordering LIMIT ".$_POST['end']."";