在这里我想通过jQuery Function将product_id值传递到addcart.php文件中。 每个按钮都设置为一个独立的产品ID,在此之前都很好。我的问题是当我单击每个按钮时,所有按钮将相同的值传递给addcart.php文件...我想传递单个(按钮)的值。请给我一个解决方案...addcart.php只包含类似代码"回声 $_POST['pid'];只有"
<?php
include('includes/db-config.php');
$shop_id=$_GET['sid'];
$get_product_q = mysql_query("select product from shops where sid = $shop_id");
$get_product_f = mysql_fetch_array($get_product_q);
$product_id = explode(',', $get_product_f['product']);
$count_product_id = count($product_id);
for($i=0;$i<$count_product_id;$i++){
$get_product_q = mysql_query("select * from products where pid = $i");
$get_product_f = mysql_fetch_array($get_product_q);
$product_id = $get_product_f['pid'];
?>
<script>
$(document).ready(function(){
$('.but').click(function(){
$.ajax({
type: 'POST',
url:"addcart.php",
data : { pid : '<?php echo $product_id?>'},
success:function(result){
$("#div1").html(result);
}});
});
});
</script>
<?php
$product_name = $get_product_f['name'];
$product_description = $get_product_f['description'];
$product_price = $get_product_f['price'];
echo $product_name;
echo '<br>';
echo $product_description;
echo '<br>';
echo $product_price;
echo '<br>';
echo '<input class="but" type="button" value="Add Cart" />';
echo '<br><br>';
}
?>
<div id="div1"></div>
你正在为每个产品重复整个Javascript。将 Javascript 移出循环,并在按钮上将产品 ID 设置为data-productid
属性:
echo '<input class="but" type="button" value="Add Cart" data-productid="' . htmlspecialchars($product_id) . '" />';
然后,当您进行 ajax 调用(单击时)时,读取产品 ID 并将其设置为 POST 数据:
$.ajax({
type: 'POST',
url:"addcart.php",
data : { pid : $(this).data('productid') },
success:function(result){
$("#div1").html(result);
}
});
试试这个:
将 : echo '<input class="but" type="button" value="Add Cart" />';
替换为 : echo '<input class="but" type="button" rel="'.htmlspecialchars($product_id).'" value="Add Cart" />';
和你的脚本:
<script>
$(document).ready(function(){
$('.but').click(function(){
$.ajax({
type: 'POST',
url:"addcart.php",
data : { pid : $(this).attr('rel'),
success:function(result){
$("#div1").html(result);
}});
});
});
</script>
问题是您将它绑定到使用类".but"单击所有元素,如果您另一方面给按钮一个 id 像
echo '<input data-pid="'. sha1($product_id) . '" class="but" type="button" value="Add Cart" />';
然后在你的jQuery函数中执行以下操作(在循环外):
<script>
$(document).ready(function(){
$('.but').click(function(){
$.ajax({
type: 'POST',
url:"addcart.php",
data : $(this).data(),
success:function(result){
$("#div1").html(result);
}
});
});
});
</script>
然后,您将绕过该问题,因为它随后侦听每个元素上的单击事件,但每个元素上的数据都不同。
我希望这有所帮助。
在 u 循环中,.but 每次都绑定一个函数,所以最后一个绑定工作 .try 给 .but 元素一个唯一的 id,例如 "id=$product_id";
你可以绑定函数一次(在循环之外),这就像:
$(document).ready(function(){
$('.but').click(function(){
var data = $(this).attr("id");
$.ajax({
type: 'POST',
url:"addcart.php",
data : { pid : data},
success:function(result){
$("#div1").html(result);
}});
});
});
运气好。