我想添加到购物车功能作为提交到我的系统的方法,但是我认为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中
第二次编辑:将添加产品添加到manage_cart.php的购物车代码