为什么它在没有被调用的时候会添加

Why is it adding when it’s not being called

本文关键字:候会 添加 调用 为什么      更新时间:2023-09-26

我制作了一个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请求,将产品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,则需要在单击add按钮时重新加载页面。就像在评论中所说的那样,在添加按钮周围放置一个post类型的表单(并使用一个好的url,让您的服务器知道这是一个添加的项目事件),并将添加按钮设置为提交类型。那么根本不需要javascript