首页 文章

JQuery函数在php循环中没有响应

提问于
浏览
1

在这里,我想通过jQuery Function.here'添加购物车'按钮将product_id值传递给addcart.php文件 . 每个按钮设置为一个invidual产品ID,这是很好的直到这..我的问题是什么是所有按钮传递相同的值addcart.php文件,当我点击每一个...我想传递个人的值(按钮)..请给我一个解决方案... addcart.php只包含像“echo $ _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>

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);
        }
    });
    
  • 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>
    
  • 1

    问题是你将它绑定到点击所有带有“.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>
    

    然后你就可以解决问题了,因为它会监听每个元素上的click事件,但每个元素的数据都是不同的 .

    我希望这有帮助 .

  • 1

    在你循环中, . 但每次都绑定一个函数,所以最后一个绑定工作.try给.but元素一个唯一的id,如“id = $ product_id”;

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

    $(文件) . 就绪(函数(){

    $( '但') . 点击(函数(){

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

    });

    });

    很幸运 .

相关问题