首页 > 解决方案 > 奇怪的问题,但是当我没有点击按钮时,为什么我的表单提交

问题描述

下面的代码是一个加减按钮,假设从我的购物车数量中加 1 或减 1。

<form method="post" style="margin: 0; display: inline-block;">
      <button method="submit" name="plusBtn" value="add">+</button>
      <button method="submit" name="minusBtn" value="minus">-</button>
      <input type="hidden" name="productID" value="<?php echo $array['shoeId']; ?>">
</form>

这是加或减 1 的函数

        function plusQuantity(){
            $productId = $_POST['productID'];
            foreach($_SESSION['finalCart'] as $eachItem){
                if($eachItem['shoeId'] === $productId){
                        $eachItem['quantity']+1;
                }
            }
        }
        function minusQuantity(){
            $productId = $_POST['productID'];
            foreach($_SESSION['finalCart'] as $eachItem){
                if($eachItem['shoeId'] === $productId){
                    if($eachItem['quantity'] = 1){
                        unset($eachItem['shoeId']);
                    } else {
                        $eachItem['quantity']-1;
                    }
                }
            }
        }

这就是我调用函数的方式

        if(isset($_POST['plusBtn'])){
            plusQuantity();
            print_r($_SESSION['finalCart']);
        }
        if(isset($_POST['minusBtn'])){
            minusQuantity();
        }

但是,当页面加载时,该函数会自行加载,并且该函数似乎也无法正常工作,但是我添加了 print_r($_SESSION['finalCart'] 甚至一些回显文本到函数部分的调用中看看该函数是否正在运行,并且确实它是在自己运行的。如果我能得到任何帮助,我仍然是 php 新手并尝试学习它,谢谢。

标签: phphtmlarraysfunction

解决方案


这样做的正确方法是使用 Ajax 调用,它会触发 JavaScript 调用并获取响应,而无需在提交时重新加载页面。

或者,您可以制作(非常丑陋的解决方案)制作两种形式:

<form action="/action_page.php">
  <input type="hidden" name="plusBtn" value="add">
  <input type="submit" value="+">
</form>

<form action="/action_page.php">
  <input type="hidden" name="plusBtn" value="minus">
  <input type="submit" value="-">
</form>

但我宁愿设计单选按钮等或其他东西,并使用适当的 Ajax 调用。


推荐阅读