1

在这里,我想通过 jQuery Function.here 由 php while 循环动态生成的“添加购物车”按钮将 product_id 值传递到 addcart.php 文件中。每个按钮都设置为一个单独的产品ID,直到这个..我的问题是当我点击每个按钮时,所有按钮都将相同的值传递给addcart.php文件......我想传递单个的值(按钮).. 请给我一个解决方案... addcart.php 只包含像“echo $_POST['pid']; only”这样的代码

<?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>
4

4 回答 4

1

您正在为每个产品重复整个 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);
    }
});
于 2013-10-14T13:48:41.743 回答
1

试试这个 :

替换: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>
于 2013-10-14T13:50:03.577 回答
1

问题是你将它绑定到单击所有具有类“.but”的元素,如果你给按钮一个像

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>

然后你会绕过这个问题,因为它会监听每个元素的点击事件,但每个元素的数据都是不同的。

我希望这有帮助。

于 2013-10-14T13:51:21.997 回答
1

在你循环中,.but 每次都绑定一个函数,所以最后一个绑定有效。尝试给 .but 元素一个唯一的 id,例如“id=$product_id”;

你可以绑定一次函数(在循环外)。这就像:

$(文档).ready(函数(){

$('.but').click(function(){

var data = $(this).attr("id");
$.ajax({

    type: 'POST',
    url:"addcart.php",
    data : { pid : data},
    success:function(result){
        $("#div1").html(result);

}});

});

});

幸运。

于 2013-10-14T13:53:30.503 回答