Я хочу добавить функцию «добавить в корзину» для отправки в мою систему, однако, я думаю, что есть проблема с AJAX (я очень новичок в PHP). Это часть кода в cart.js:
$(".product-form").submit(function(e){
var form_data = $(this).serialize();
var button_content = $(this).find('button[type=submit]');
button_content.html('Adding...');
$.ajax({
url: "manage_cart.php",
type: "POST",
dataType:"json",
data: form_data
}).done(function(data){
$("#cart-container").html(data.products);
button_content.html('Add to Cart');
})
}
e.preventDefault();
});
Ниже приведен фрагмент моего index.php, который я использую для вызова этой функции в качестве кнопки отправки типа:
<?php
$sql_query = "SELECT pizzaID, pizzaName, pizzaDesc, pizzaCode, Image, pizzaPrice FROM tbl_pizzas";
$resultset = mysqli_query($con, $sql_query) or die("database error:". mysqli_error($con));
while( $row = mysqli_fetch_assoc($resultset) ) {
?>
<li>
<form class="product-form">
<h4><?php echo $row["pizzaName"]; ?></h4>
<div><img class="pizzaImage" src="local/<?php echo $row["Image"]; ?>"></div>
<div>Price : <?php echo $currency; echo $row["pizzaPrice"]; ?></div>
<div><?php echo $row["pizzaDesc"]; ?></div>
<div class="product-box">
<div>
Qty :
<select name="product_qty">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
</select>
</div>
<input name="pizzaCode" type="hidden" value="<?php echo $row["pizzaCode"]; ?>">
<button type="submit">Add to Cart</button>
</div>
</form>
</li>
<?php } ?>
Моя проблема в том, что когда я нажимаю кнопку «Добавить в корзину», она остается как «Добавление ...», которое вы можете увидеть в manage_cart.php. Каким-то образом часть
$.ajax({
url: "manage_cart.php",
type: "POST",
dataType:"json",
data: form_data
}).done(function(data){
$("#cart-container").html(data.products);
button_content.html('Add to Cart');
})
}
e.preventDefault();
});
не похоже на выполнение.
Я пытался использовать session_write_close (); вместо session_start (); - когда я искал в Google, они сказали, что, вероятно, мой PHP загружается слишком долго из-за блокировки файла или чего-то еще - почему-то это не сработало.
добавление товаров в корзину в коде manage_cart.php ниже:
# add products in cart
if(isset($_POST["pizzaCode"])) {
foreach($_POST as $key => $value){
$product[$key] = filter_var($value, FILTER_SANITIZE_STRING);
}
$statement = $conn->prepare("SELECT pizzaName, pizzaPrice FROM tbl_pizzas WHERE pizzaCode=? LIMIT 1");
$statement->bind_param('s', $product['pizzaCode']);
$statement->execute();
$statement->bind_result($pizzaName, $pizzaPrice);
while($statement->fetch()){
$product["pizzaName"] = $pizzaName;
$product["pizzaPrice"] = $pizzaPrice;
if(isset($_SESSION["products"])){
if(isset($_SESSION["products"][$product['pizzaCode']])) {
$_SESSION["products"][$product['pizzaCode']]["product_qty"] = $_SESSION["products"][$product['pizzaCode']]["product_qty"] + $_POST["product_qty"];
} else {
$_SESSION["products"][$product['pizzaCode']] = $product;
}
} else {
$_SESSION["products"][$product['pizzaCode']] = $product;
}
}
$total_product = count($_SESSION["products"]);
die(json_encode(array('products'=>$total_product)));
}
РЕДАКТИРОВАТЬ: Я извиняюсь за неправильное наименование. Часть кода вызовов jQuery для manage_cart.php НЕ находится в manage_cart.php, но находится в javascript cart.js
2-е РЕДАКТИРОВАНИЕ: добавлены товары в код корзины manage_cart.php