javascript - array_push 推送到我的会话数组 PHP 中的许多项目
问题描述
我正在创建一个小网店来取乐。每次用户单击 cetrain 按钮时,addToChart()
都会调用该函数。在这个函数中,我将所有需要的数据推送到一个数组中。之后,我使用 AJAX POST 方法将此数组发送到 php 脚本 (addToCart.php),如下面的 javascript 代码所示:
function addToChart(deze) {
const brandContainer = deze.parentNode;
const productName = brandContainer.children[0].innerHTML;
addToCartProductArr.push(productName);
$.ajax({
url: "./*/addToCart.php",
method: "POST",
data: {arr:addToCartProductArr},
});
}
在addToCart.php
我获取传递的数组并将其存储到$arr
变量中。之后我循环这个数组并将所有数据(使用array_push()
方法)推送到一个会话数组中,因为我需要在其他 php 脚本中使用这个会话数组。
<?php
include_once('./conn.php');
session_start();
$arr = $_POST['arr'];
if(!isset($_SESSION['name_arr'])) {
$_SESSION['name_arr'] = array();
}
for($i=0; $i<sizeof($arr); $i++) {
array_push($_SESSION['name_arr'], $arr[$i]);
}
?>
问题:当用户单击按钮时,数据会多次存储到会话数组中。例如:击中一个项目 3 次会在我的 session_array 中给我 5 个项目,例如:
HTML 代码:
<p onclick="addToChart(this)" class="addToChart"><i class="fa fa-plus-circle"></i></p>
解决方案
你原来的 php 是正确的,只需在 javascript 中制作这样的脚本
function addToChart(deze) {
var addToCartProductArr=[];
const brandContainer = deze.parentNode;
const productName = brandContainer.children[0].innerHTML;
addToCartProductArr.push(productName);
$.ajax({
url: "addToCart.php",
method: "POST",
data: {arr:addToCartProductArr},
});
}
我们只是在每次调用函数时初始化数组:
var addToCartProductArr=[];
推荐阅读
- r - 删除值高于某个阈值的重复观测值
- velocity - Apache Velocity GenericTools ToolsManager 不工作
- python - 如何在kivy中制作画廊?
- android - 使用 FaceBook 登录不适用于 Unity Android 项目(Firebase 身份验证)
- wpf - 如何设置 ScrollContentPresenter 的背景色?
- facebook - 即使我已经有一个,设置持久性菜单也会返回“必须开始”
- java - 如何创建正确的mysql连接
- oop - DDD 是否违反了某些 OOP 原则?
- angular - 以角度解码jwt令牌?
- openshift - Quarkus OpenShift 部署有效,但未推出