gpt4 book ai didi

php - 如何使用ajax将产品添加到购物车?

转载 作者:行者123 更新时间:2023-12-05 05:38:55 25 4
gpt4 key购买 nike

我正在创建一个电子商务网页,它几乎完成了,但我注意到在将产品添加到购物车时它重定向到产品部分的开头(即在产品 1 中) PC 它几乎不会影响任何东西,因为产品可以显示在整个屏幕上,但是如果你在移动设备上并且添加了 1 个非常低的产品,这将非常乏味,起初我尝试添加在表单的操作中重定向到产品 ID,从而避免一开始就去,但这种重定向很糟糕,会让客户头晕目眩。然后尝试用 ajax 来做,我已经看过其他帖子,甚至看过教程,但没有一个对我有用。我想要的是,当我按下添加到购物车时,它会被添加。以下是部分代码:

产品部分:

        <div class="container">
<div class="back-container"><button class ="back" onclick="location.href='productos.php'"><i class="fa-solid fa-arrow-left-long"></i></button></div>
<section class="Productos">
<article class="panrallado-grimaldi">
<h1>Pan Rallado</h1>
<div class="productos">
<?php
$select_products = $connect->prepare("SELECT * FROM `productos` WHERE categoria='pr'") or die('query failed');
$select_products->execute();
$list_products = $select_products->fetchAll(PDO::FETCH_ASSOC);
foreach($list_products as $producto){
include 'productact.php'; } ?>
</div>
</article>
</section>
</div>
</main>
<script src="function.js"></script>
<script>
$('body').on('submit', '.formadd', function(ev){
var id = $(this).attr('id');
$.ajax({
type: 'POST',
url: 'backend/addCart.php',

data: $(id).serialize(),

success: function(data) {
$('.nav').load(' .nav');
},
error: function() {
alert('No se pudo agregar al carrito, intente mas tarde');
}
});
ev.preventDefault();
});
</script>
</body>
</html>

productadd(表格到所有产品):

<?php 
$id = $producto['id'];
$codigo = $producto['codigo'];
$imagen = "media/productos/$codigo.png";
$nombre = $producto['nombre'];
$precio = $producto['precio'];
$bulto = $producto['bulto']
?>
<div class="p" id="<?php echo $id?>">
<img src="<?php echo $imagen; ?>" alt="<?php echo $nombre?>" title="<?php echo $nombre?>">
<p ><?php echo $nombre; ?></p>
<form action="backend/addCart.php" class="formadd" id="<?php echo $id?>" method="post">
<?php if(isset($_SESSION['email'])){?>
<p>(x <?php echo $bulto; ?>)</p>
<p class="precioo pps">$<?php echo number_format($precio, 0, ',', '.') ?></p>
<input type="hidden" name="id" value="<?php echo openssl_encrypt($id,COD,KEY);?>">
<input class="cantidad pps" type="number" min="1" name="cantidad" class="cantidad" placeholder="1">
<div class="cc"><button type="submit" name="btnCart" value="Add" class="c pps">Agregar Al carrito</button></div>
<?php
}
?>
</form>
</div>

addCart.php(添加产品的功能):

    <?php
if(!isset($_SESSION)) {
session_start();
};
include 'connect.php';
include 'config.php';

if (isset($_POST['id'])) {
if(is_numeric(openssl_decrypt( $_POST['id'], COD, KEY))){
$ID = openssl_decrypt( $_POST['id'], COD, KEY);
}else{ echo '<script> alert("ID incorrecto"); </script>'; exit;
}
if($_POST['cantidad']<1){
$CANTIDAD = 1;
}else{
$CANTIDAD = $_POST['cantidad'];
}
if(!isset($_SESSION['cart'])){
$producto=array(
'ID'=>$ID,
'CANTIDAD'=>$CANTIDAD,
);
$_SESSION['cart'][0] = $producto;
echo '
<script>alert("Producto Añadido Exitosamente")</script>';
}else{
$idProductos=array_column($_SESSION['cart'],"ID");
if(in_array($ID, $idProductos)){
echo
'<script>alert("El Producto Ya Ha Sido Agregado")</script>';

}else{
$producto=array(
'ID'=>$ID,
'CANTIDAD'=>$CANTIDAD,
);
array_push($_SESSION['cart'], $producto);
echo '
<script>alert("Producto Añadido Exitosamente")</script>' ;
}
}
}
?>

问题是表单成功并执行我在 success: function(data) 上执行的操作,但产品没有添加到购物车。并且 chrome 控制台没有显示任何错误。

最佳答案

我已经做到了。如果有人想知道,这里是 ajax 代码:

$('.formadd').on('submit', function(ev) {   
var id2 = $(this);
$.ajax({
type: $(id2).attr('method'),
url: $(id2).attr('action'),
data: $(id2).serialize(),
success: function(data) {
$('.cantidad').val('');
$('.cartbasket').load(' .cartbasket');
$('.alert-co').removeClass('hide')
},
error: function() {
$('.alert-inc').removeClass('hide')
}
});
ev.preventDefault();
});

关于php - 如何使用ajax将产品添加到购物车?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72819364/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com