2017-04-11 25 views
-1

我正在構建一個自定義添加到購物車系統。一個產品可以有許多標準,如顏色,尺寸等。這些標準可以在後端動態添加。jQuery獲取價值,與同一類下拉的數據

現在在前端,我使用PHP將所有動態標準提取到我的產品頁面。該腳本如下:

<form class="cart"> 
<div class="add-to-cart-table"> 


     <?php 


$sqlac = "SELECT * FROM sym_product_option WHERE product_id = '$pk'"; 
$stmtac = $dbo->prepare($sqlac); 
$stmtac->execute(); 
while($rowac = $stmtac->fetch(PDO::FETCH_ASSOC)){ 

      $huhu = $rowac["option_id"]; 
     $sqlag = "SELECT * FROM sym_product_option_value WHERE option_id = '$huhu'"; 
     $stmtag = $dbo->prepare($sqlag); 
     $stmtag->execute(); 

    ?> 
    <div class="option"> 
     <?php echo $rowac["option_name"]; ?> 
     <select name="" class="form-control" class="option" onchange="calc()" data-option-id="<?php echo $rowac["option_"]; ?>" > 
      <?php while($rowag = $stmtag->fetch(PDO::FETCH_ASSOC)){ 

      if($rowag["value_price"] == "0.00"){ 
       $demson = ""; 
      } else { 
       $demson = "Add-On RM ".$rowag["value_price"]; 
      } 
      ?> 
      <option value="<?php echo $rowag["value_id"]; ?>" data-price="<?php echo $rowag["value_price"]; ?>"><?php echo $rowag["value_name"]." ".$demson; ?> </option> 
      <?php } ?> 
     </select> 
    </div> 
    <?php } ?> 
    <div style="margin-top: 30px;" > 
     <button type="button" class="button" onclick="addtocart();" style="width:100%;">Add to cart</button> 
    </div> 
</div> 

現在我不知道如何使用jQuery來獲取每個標準ID(數據選項-ID),標準期權價值(選擇下拉值),並將它們組合成一個數組發送到php後端。我認爲陣列應該是這樣的:

$data = array ("0" => array ("option-id" => "1", "option-value" => "5"), "1" => array ("option-id" => "2", "option-value" => "8")); 

有人可以幫我在這?非常感謝您的幫助。謝謝!

+1

你提的問題是關於你的前端發送到服務器。請顯示相關的前端(html + js)代碼,而不是後端來生成它。 除此之外,到目前爲止您的方法是什麼?請不要期望stackoverflow來編寫你的代碼。做你自己的研究ajax和jQuery,然後請[問一個更具體的問題](https://stackoverflow.com/help/how-to-ask)。 – panepeter

+0

爲什麼要通過任意自定義數據屬性來處理?我將這些信息直接放到字段名稱中(「array syntax」,'name =「option [47]」') - 它在PHP中爲接收端提供了一個數組結構,您可以使用標準方法jQuery的序列化來創建表單數據集,而不必手動完成。 – CBroe

回答

0

我認爲你想要做的是添加一個圍繞選項下拉菜單的開始和結束表單標記。之後,你可以使用下面的代碼序列化的形式,並與阿賈克斯

$("form").on("submit", function(event) { 
    event.preventDefault(); 
    console.log($(this).serialize()); 
});