为什么它在不被调用时添加

Why is it adding when it’s not being called

我编写了一个 JavaScript 代码来制作购物车,但是这个代码是 运行 即使我不点击它:

function addProduct(prodId) {
  var sessionDivId = document.getElementById(prodId);
  if (prodId) {
    sessionDivId.innerHTML = '<?= $_SESSION['product_id_1']+=1 ?>';
  }
}
<div onclick="addProduct('testSession1');">ADD</div>
<div id="testSession1"></div>

每次我刷新网站时,它都会将 1 添加到会话 testSession1,即使我没有单击“添加”按钮也是如此。

您的 PHP 逻辑将在用户加载页面之前 运行 在服务器上。要添加产品,您需要将其存储在其他地方(因为 PHP 不再有任何控制权将 +=1 放入购物车)。

我会向用户购物车发出 AJAX 请求 post 产品 ID:

function addProduct(prodId) {
    // using jQuery for simplicity of writing
    $.ajax({
        type: "POST",
        url: "/cart/item/" + prodId,         // or other backend API endpoint
        success: displayNiceUserMessage()
    });
 }

当然还有一些错误处理以防出现问题。

更新

我看到你不想使用 Ajax。正如您所知,它不需要比我上面编写的代码更复杂。然后在后端,如果任何用户向 url.

发出 POST 请求,您只需向会话添加 +1

但如果您不想 ajax,则需要在单击添加按钮时重新加载页面。就像评论中所说的那样,在添加按钮周围放置一个 post 类型的表单(并使用一个好的 url 让您的服务器知道这是一个已添加的项目事件),然后制作添加按钮提交类型。那么根本不需要javascript。