为什么它在没有被调用的时候会添加
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请求,将产品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
相关文章:
- 元素不会添加到Javascript数组中
- tinyMCE不会添加特定文本区域的Control
- 使用gulp和wiredep,socket.io不会添加到index.html中(即使它在bower.json中)
- 我正试图让它,当你点击其中一个下拉选择时,它会添加到列表中,这是我们的一个下拉按钮的代码
- 为什么Javascript不会添加onclick
- Javascript - 寻找 prependTo 的替代方案,这样它就不会添加多个项目
- 复选框中的值不会添加
- 使用 Moment.js 制作本周日期的数组不会添加到数组中
- Angularjs:即使在我将变量解析为整数之后,也会添加整数
- 来自 AJAX 源的事件不会添加到完整日历中
- 当我使用 ckeditor 工具栏时,它会添加 html 标签,而不是在显示时添加所需的效果
- jQuery不会添加或删除类
- $resolve在创建控制器之前不会添加到$scope
- 在 Firebase 中使用用户的副本时,$conf 美元会添加到对象中,因此我无法将用户复制到新位置
- Backbone.js只有在服务器成功(200状态)时才会添加到集合中
- JavaScript-从字符串转换为数字会添加尾随的0
- 比较两个数组和公共对象会添加到新数组中
- 在Javascript中加载文本文件会添加意外的额外隐藏字符
- 当从Chrome中的javascript提交时,输入字段值不会添加到字段历史记录中
- 自动化基于HTML5/ AngularJS的UI,其中id's不会添加到元素上