我制作了一个我正在制作购物车的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
。
答案 0 :(得分:1)
在用户加载页面之前,您的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,则需要在单击“添加”按钮时重新加载页面。就像在评论中所说的那样,在添加按钮周围添加一种类型的帖子(并且有一个好的网址,让你的服务器知道这是一个发生的添加项目事件),并使添加按钮成为提交类型。然后根本不需要javascript。