我想通過ajax開發一個添加到購物車功能,問題是無論我添加到購物車的哪個產品,它都會將最後一個項目添加到列表中,然後增加相同的產品點擊任何其他產品。這裏是我的代碼: -ajax通話只返回最後一個ID
<?php
$i = 1;
while($row = mysqli_fetch_array($run_products)){
$op_id = $row['option_id'];
echo "<tr>";
echo "<td>" . $i . "</td>";
echo "<td>" . $row['option_desc'] . "</td>";
echo "<td>
<form action='' method='post' class='p_form'>
<input type='text' name='product_id' value='$op_id' pid='$op_id'>
<input type='text' name='quantity' value='1' pid='$op_id'>
<input class='btn btn-primary add' type='submit' name='add_to_cart' value='Add to Cart' id='product' pid='$op_id'>
</form>
</td>";
echo "</tr>";
$i++;
}
?>
這裏是jQuery的:
<script type="text/javascript">
$(document).ready(function(){
$(document).on('click','.p_form',function (event) {
event.preventDefault();
var element = $(this);
var id = element.attr("pid");
//alert(id);
$.ajax({
url: 'action.php',
method: 'post',
//data: {id:id},
data:$('.p_form').serialize(),
success: function(data){
$('#message').html(data);
}
});
return false;
});
});
</script>
下面是action.php
,在$ PRODUCT_ID總是返回爲4(例如),如果在最後的最後一個ID爲4
if (!empty($_POST)){
$product_id = $_POST['product_id'];
echo $product_id;
}
在阿賈克斯你使用數據:$序列化()( 'p_form。')。 ,這意味着它將採用多個類中的最後一個值。所以你可以做的是爲每個表單創建不同的類名或ID並獲得該值。所以不會有任何重複的問題 – Karthick
,因爲您正在創建具有相同名稱的相同表單。所以它只會採取最後的形式。 – Gaurav
使用'data:$(this).serialize()' – Phil