如何提交表单如何在不重新加载表单提交页面的情况下获取会话计数

how to submit form how to get session count without reloading page on form submission

我创建了一个带有隐藏输入表单的表单,该表单将值提交给 PHP 脚本,并通过使用 AJAX 重新加载页面将每个值存储在会话数组中。它 returns 向 <p id ="msg"></p> 发送 HTML 成功警报消息。我需要有关如何在 AJAX 中的 success: 点将 $count 发送到 <p id="count"></p> 并将成功警报消息发送到 <p id ="msg"></p> 的帮助。而且我希望成功警报在显示 3 秒后消失。下面是我的代码:

my_add_cart.php

<?php 
 session_start();

     $_SESSION['title'][]=$_POST['title'];
     $_SESSION['price'][]=$_POST['price'];
     $_SESSION['img_src'][]=$_POST['img_src'];
     
        $count = count($_SESSION["title"]);
echo $count;
     echo '<div class="alert">
  <span class="closebtn" onclick="this.parentElement.style.display=\'none\';">&times;</span> 
  <center>Product added successfully to cart.</center>
</div>';
exit();
?>

上面是 my_add_cart.php 下面是我的 HTML 和 javascript:


<script type="text/javascript">

function clickButton(){
    var title=document.getElementById('title').value;
    var price=document.getElementById('price').value;
    var img_src=document.getElementById('img_src').value;
   
    $.ajax({
        type:"post",
        url:"my_add_cart.php",
        data: 
        {  
           'title' :title,
           'price' :price,
           'img_src' :img_src
        },
        cache:false,
  
        success: function (html) 
        {
           $('#msg').html(html);
           
        
        }
        
    });
    return false;
 }
</script>

<html>
   <p id="msg"></p>
   <p id="count"></p>
       
<form onsubmit="clickButton()">

<input type="hidden" value="<? echo $title ?>" name = "title" id="title" >

<input type="hidden" value="<? echo number_format($price); ?>" name = "price" id="price" >

<input type="hidden" value="<? echo "https://mikeandcathy.com.ng/admin/UploadFolder/".$row_product_img[0]; ?>" name = "img_src" id="img_src">
                                        
<button type="submit" id="add_to_cart" name="add_to_cart" class="btn btn-outline-secondary btn-sm" value="Add to cart" onclick="return clickButton();">Add Cart</button>
  
</form>

</html>

我建议将您的服务器代码变成 json api

解决方案

my_add_cart.php改成这个

<?php 
     session_start();
    $_SESSION['title'][]=$_POST['title'];
    $_SESSION['price'][]=$_POST['price'];
    $_SESSION['img_src'][]=$_POST['img_src']; 
    $count = count($_SESSION["title"]);
    header('Content-Type: application/json; charset=utf-8');
    echo json_encode(
        [
            'count' => $count,
            'message' => '<div class="alert"><span class="closebtn" onclick="this.parentElement.style.display=\'none\';">&times;</span> <center>Product added successfully to cart.</center></div>';
        ]
    );
    exit();
?>

将您的前端代码更改为此


<script type="text/javascript">

function clickButton(){
    var title=document.getElementById('title').value;
    var price=document.getElementById('price').value;
    var img_src=document.getElementById('img_src').value;
   
    $.ajax({
        type:"post",
        url:"my_add_cart.php",
        data: 
        {  
           'title' :title,
           'price' :price,
           'img_src' :img_src
        },
        cache:false,
  
        success: function (data) 
        {
           $('#msg').html(data['message']);
           $('#count').html(data['count']);        
        }
        
    });
    return false;
 }
</script>

<html>
   <p id="msg"></p>
   <p id="count"></p>
       
<form onsubmit="clickButton()">

<input type="hidden" value="<? echo $title ?>" name = "title" id="title" >

<input type="hidden" value="<? echo number_format($price); ?>" name = "price" id="price" >

<input type="hidden" value="<? echo "https://mikeandcathy.com.ng/admin/UploadFolder/".$row_product_img[0]; ?>" name = "img_src" id="img_src">
                                        
<button type="submit" id="add_to_cart" name="add_to_cart" class="btn btn-outline-secondary btn-sm" value="Add to cart" onclick="return clickButton();">Add Cart</button>
  
</form>

</html>