2015-08-08 75 views
1

我需要把量为我的产品我的数据库。我的产品显示在一个foreach循环中,包括数量的文本框。但只有第一个文本框正在工作。你能帮我么?非常感谢!文本框只有第一个返回值jQuery的PHP

<div class="col-md-9 cartbox"> 
       <?php foreach($result as $row): ?> 
        <div class="col-md-12 smallbox"> 
         <div class="col-md-3 item_in_box"> 
          <div class="cart_img_div"> 
           <img class="img-responsive prodimage" src="<?php echo $row['prod_image']; ?>"> 
          </div> 
         </div> 

         <div class="col-md-3 item_in_box"> 
          <div class="cart_prod_name" data-name="<?php echo $row['prod_name']; ?>"> 
           <?php echo strtoupper($row['prod_name']); ?> 
          </div> 
         </div> 

         <div class="col-md-3 item_in_box"> 
          Quantity: <input type="text" class="cart_txtquantity"/><br> 
          <input type="button" class="btn btn-warning updateqty" value="Update"/> 
         </div> 

         <div class="col-md-3 item_in_box"> 
          <div class="cart_prod_price"> 
           <input type="hidden" class="hidden_price" value="<?php echo $row['price']; ?>" 
           <b> PHP:</b> <?php echo $row['total_amount']; ?> 
          </div> 
         </div> 
        </div> 

       <?php endforeach; ?> 
      </div> 

<script> 
     $(document).ready(function() { 

      $(".updateqty").click(function() { 
       $.ajax ({ 
        url: "../controller/order/updatequantity.php", 
        method: "POST", 
        data: { 
         prod_name: $(".cart_prod_name").attr('data-name'), 
         quantity: $(".cart_txtquantity").val(), 
         price: $(".hidden_price").val() 
        }, 
        success: function(result) { 
         alert(result); 
        }, 
        error: { 
         function(jqXHR, textStatus, errorThrown) { 
          console.log(errorThrown); 
         } 
        } 
       }); 
      }); 

     }); 

    </script> 
+0

您使用类选择,即。 '$( “hidden_​​price ”)。VAL()',所以它会找到第一个,而不是一个关系到你的'$(“。updateqty”)' – Sean

+0

对不起,先生,但我应该怎么办?获得数量的价值? –

回答

2

当你为AJAX选择值,你的类cart_prod_namecart_txt_quantityhidden_price搜索整个文档。如果仔细观察ajax结果,您会发现它始终是请求中第一个<div class=smallbox">的数据。这是因为当您在jQuery中选择多个对象时调用.val()时,它会返回第一个选定对象的值(第一行的值)。

因此,要解决这个问题,你需要查询的搜索特定类别的上下文(在DOM节点的子集)。

例如

$(document).ready(function(){ 

    $(".updateqty").click(function() { 
     var context = $(this).parents('.smallbox'); 
     $.ajax ({ 
       ... 
       data: { 
        prod_name: $(".cart_prod_name", context).attr('data-name'), 
        quantity: $(".cart_txtquantity", context).val(), 
        price: $(".hidden_price", context).val() 
       }, 
       ... 
     }); 
    }); 
}); 
+0

宾果!谢谢先生!我知道了。 :) –

相关问题