Данные отправляются в AjAX только при двойном нажатии кнопки

Мой сценарий 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);
}
}

?>

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector