JQuery 函数在循环时在 php 内部没有响应


JQuery Function not response inside of php while loop

在这里我想通过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);
}});

});

});

运气好。