【问题标题】:JQuery Function not response inside of php while loopJQuery函数在php while循环中没有响应
【发布时间】:2013-10-14 13:44:02
【问题描述】:

在这里,我想通过 jQuery Function.here 由 php while 循环动态生成的“添加购物车”按钮将 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>

【问题讨论】:

  • 很难理解你在问什么。您能否花时间重新格式化问题和代码块,并尝试更清楚地表达您的问题。我们愿意提供帮助,但目前非常困难。

标签: php jquery


【解决方案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);
    }
});

【讨论】:

    【解决方案2】:

    试试这个:

    用这个替换:echo '&lt;input class="but" type="button" value="Add Cart" /&gt;';echo '&lt;input class="but" type="button" rel="'.htmlspecialchars($product_id).'" value="Add Cart" /&gt;';

    还有你的脚本:

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

    【讨论】:

    • 是的,这是正确的,但不要将 jquery 代码放入循环中!
    【解决方案3】:

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

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

    我希望这会有所帮助。

    【讨论】:

      【解决方案4】:

      在你循环中,.but 每次都绑定一个函数,所以最后一个绑定有效。尝试给 .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);
      
      }});
      

      });

      });

      祝你好运。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-06-21
        • 1970-01-01
        • 2014-10-23
        • 2016-11-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多