为什么它在不被调用时添加
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。
我编写了一个 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。