私は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>
ここでは最後の最後のidは4
ある場合、$ PRODUCT_IDは、常に(たとえば)4として返し、action.php
ですボタン上の
if (!empty($_POST)){
$product_id = $_POST['product_id'];
echo $product_id;
}
あなたがデータを使用しています:$( 'p_form')(シリアライズ)これは、複数のクラスから最後の1つの値を取得することを意味します。ですから、フォームごとに異なるクラス名やIDを作成し、その値を取得することができます。同じ名前の同じフォームを作成しているので、重複した問題はありません – Karthick
。それは最後の形式だけになります。 – Gaurav
'data:$(this).serialize()'を使用してください – Phil