Мой сценарий AJAX и PHP все в порядке, он работает как надо.Моя единственная проблема заключается в том, что функция оповещения срабатывает только при двойном нажатии кнопки.РЕДАКТИРОВАТЬ: при первом щелчке на вкладке сети отображаются все данные, которые должны быть отправлены с кодом: 200
Вот код, который я отправляю в AJAX
<input type="hidden" id="name<?=$product['id'];?>" name="hidden_name"
value="<?=$product['title'];?>">
<input type="hidden" id="price<?=$product['id'];?>" name="hidden_price"
class="hidden_price" value="<?=$product['price'];?>">
Вот вход, который запускает код JavaScript
<input type="button" class="button" name="cartbtn" id="<?=$product['id'];?>"
value="Quick Add-to-Cart">
Вот код JavaScript, который отправляет данные от входных данных в скрипт PHP:
<script type="text/javascript">
$(document).ready(function(data) {
$('.button').click(function() {
var product_id = $(this).attr('id');
var product_name = $('#name' + product_id).val();
var product_price = $('#price' + product_id).val();
var action = "add";
console.log(product_id);
$.ajax({
url: "../PHP_Scripts/quick_cart.php",
method: "POST",
dataType: "json",
data: {
product_id: product_id,
product_name: product_name,
product_price: product_price,
action: action
},
success: function(data) {
$('#order_table').html(data.order_table);
$('.badge').text(data.cart_item);
alert("Procuct added to cart");
}
});
});
});
</script>
Может кто-нибудь пролить свет начто здесь происходит?Я хочу, чтобы цена товара отправлялась в корзину при нажатии кнопки только один раз, а не дважды.
HTTP-код равен 200;нет никаких проблем с фактической отправкой данных, только то, что данные отправляются только с двойного щелчка, а не с одного щелчка.Я знаю это, потому что предупреждение срабатывает только при двойном щелчке.
РЕДАКТИРОВАТЬ: ЗДЕСЬ МОЙ КОД КОРЗИНЫ:
if (isset($_POST["product_id"])) {
$order_table = '';
$message = '';
if ($_POST["action"] == "add") {
if (isset($_SESSION['shopping_cart'])) {
$is_available = 0;
foreach ($_SESSION['shopping_cart'] as $key => $value) {
if ($_SESSION['shopping_cart'][$key]['product_id'] ==
$_POST['product_id']) {
$is_available++;
$_SESSION['shopping_cart'][$key]['product_quantity'] =
$_SESSION['shopping_cart'][$key]['product_quantity'] +
$_POST['product_quantity'];
}
}
if ($is_available < 1) {
$item_array = array(
'product_id' => $_POST['product_id'],
'product_name' => $_POST['product_name'],
'product_price' => $_POST['product_price'],
'product_quantity' => $_POST['product_quantity'],
'product_image' => $_POST['product_image']
);
$_SESSION['shopping_cart'][] = $item_array;
}
}
else{
$item_array = array(
'product_id' => $_POST['product_id'],
'product_name' => $_POST['product_name'],
'product_price' => $_POST['product_price'],
'product_quantity' => $_POST['product_quantity'],
'product_image' => $_POST['product_image']
);
$_SESSION['shopping_cart'][] = $item_array;
}
$order_table .= '
<table class="table table-bordered">
<tr style="color: #000;">
<th width="40%">Product Name</th>
<th width="10%">Quantity</th>
<th width="20%">Price</th>
<th width="15%">Total</th>
<th width="5%">Action</th>
</tr>
';
if (!empty($_SESSION['shopping_cart'])) {
$total = 0;
foreach ($_SESSION['shopping_cart'] as $key => $value) {
$order_table .= '
<tr style="color: #000;">
<td>'.$value['product_name'].'</td>
<td>'.$value['product_quantity'].'</td>
<td align="right">£'.$value['product_price'].'</td>
<td align="right">£'.number_format($value['product_price'] *
$value['product_quantity'], 2).'</td>
<td><button name="delete" class="delete"
id="'.$value['product_id'].'">Remove</button></td>
</tr>
';
$total = $total + ($value['product_price'] *
$value['product_quantity']);
}
$order_table .= '
<tr style="color: #000;">
<td colspan="3" align="right">Total</td>
<td align="right">£'.number_format($total, 2).'</td>
<td></td>
</tr>
';
}
$order_table .= '</table>';
$output = array(
'order_table' => $order_table,
'cart_item' => count($_SESSION['shopping_cart'])
);
echo json_encode($output);
}
}
?>