php - 奇怪的问题,但是当我没有点击按钮时,为什么我的表单提交
问题描述
下面的代码是一个加减按钮,假设从我的购物车数量中加 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 新手并尝试学习它,谢谢。
解决方案
这样做的正确方法是使用 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 调用。
推荐阅读
- postgresql - PostgreSQL 中不存在 double 类型
- ssl-certificate - FreeRadius 证书
- javascript - 通过创建动态密钥访问 json 数据
- elasticsearch - 使用 elasticsearch 对完整字符串进行排序
- javascript - 使用以编程方式添加的验证器将超链接添加到 ValidationSummary
- vb.net - 结构 intptr 无法被索引,因为它没有默认属性
- sails.js - 如何在 Helper 类中添加更多功能?
- azure-ad-b2c - 有没有办法在本地测试 Azure B2C 自定义策略而不将 XML 文件上传到 Azure 门户?
- node.js - 如何将浏览器配置为在 MEAN 应用程序中发送另一个请求之前等待响应
- apache-spark - Apache Spark Stats 集合..