与PHP Ajax add to cart not working中类似,我的添加到购物车也无法正常工作。我正在尝试在<div id="mycart"> here </div>
中显示添加的产品名称,价格,数量和总价,但是它不起作用,并且在控制台中没有出现任何错误。起作用的东西:
有人可以告诉我我在做什么错吗?
我在products.php上的表单
<form class="form-item" method="post" action="?action=add&id=<?php echo $row["id"]; ?>">
bla bla input
<input type="submit" name="add_to_cart" class="btn btn-outline-secondary btn-sm" value="Add to cart">
我的ajax.js
<script>
$('.form-item').on('submit', function() {
var id = $(this).attr("id");
var titel = $('#titel' + id).val();
var price = $('#price' + id).val();
var quantity = $('#quantity' + id).val();
$.ajax({
url:"cart-process.php",
method:"POST",
dataType:"json",
data:{
id:id,
titel:titel,
price:price,
quantity:quantity,
},
success:function(data)
{
$('#mycart').html(data);
alert("Product has been added to cart");
}
});
return false;
});
</script>
和我的cart-process.php
<?php
session_start();
if(!empty($_SESSION['shopping_cart'])){
$total = 0;
foreach($_SESSION['shopping_cart'] as $key => $row){
$output .='<a href="?action=delete&id='.$row['id'].'" class="action-icon close-shopping-cart-box"><i class="ti ti-close"></i></a>';
$output .='<span>'.$row['titel'].'</span><span class="text-muted"> x '.$row['quantity'].'</span><br /> ';
$total = $total + ($row['quantity'] * $row['prijs']);
}
$output.='<br />Totaal:€ '.number_format($total, 2).'';
if (isset($_SESSION['shopping_cart'])){
if (count($_SESSION['shopping_cart']) > 0){
$output.='<a href="checkout-cash" style="margin-top:20px;" class="btn btn-outline-warning">Cash payment</a>';
$output.='<a href="checkout-paypal" style="margin-top:20px;" class="btn btn-outline-warning">Paypal payment</a>';
}}
}
echo json_encode($output);
?>
答案 0 :(得分:1)
您需要进行两项更改,首先,告诉ajax函数您希望接收html响应:
$.ajax({
url:"cart-process.php",
method:"POST",
dataType:"html",
...
第二,不要尝试对PHP输出进行json编码,它不是 json:
echo $output; // not json_encode($output);
答案 1 :(得分:0)
我认为可能是3个问题
Ajax呼叫
$.ajax({
url:"cart-process.php", // script location
method:"POST", // if you use post, then get the values from $_POST
//dataType:"json", NO NEED
data:{
id:id, // this is how the array will be read
titel:titel,
price:price,
quantity:quantity,
},
success:function(data) //success call
{
$('#mycart').html(data);
alert("Product has been added to cart"); // even if no data is returned
//alert will be shown
}
});
return false;
您正在使用ajax / js脚本发布
必须从服务器端的$_POST array
获取变量,但是在服务器端,当您向图表中添加新产品时,我看不到。
如果要将新产品保存到会话中
//as the var names on your js script will be preserved on php side
// you can just add it, if you dont needd to process this info
$_SESSION["shoping_cart"][] = $_POST;
//Now you use a loop to build the html
这是第三个问题显示的地方,您的ajax调用需要JSON响应,而php json_encoding
则是html响应?不需要,只需echo $html;
并在成功调用后在您的js data = $html
上,然后将html添加到元素
$("#elementid .orclass").html(data)
希望我的回答对您有所帮助。