我在Internet Explorer中遇到问题,当我添加到购物篮时,我的购物篮计数没有更新。
守则
下面是单击Add To Basket按钮时运行的代码....
if($(this).attr('class')==='addToCart'){
$.ajax({
url: '../includes/add-product.php?accountID=' + localStorage.getItem("username"),
success: function(data) {
console.log('data ' + data);
setTimeout(function () {
basketCount();
}, 1000);
}
});
}
我已经排除了我认为不相关的代码,以及传递给add-product.php的大多数参数 这似乎适用于所有浏览器...数据被添加到数据库中,作为一个测试,在add-product.php的末尾,我回显“数据已添加”。
问题在于basketCount功能在其他浏览器中运行良好,而不是IE。
function basketCount() {
"use strict";
console.log('basketCount running');
var basketCount = 0;
$.ajax({
url: '../includes/basket-count.php',
data: 'accountID=' + accountID,
dataType: 'json',
success: function(data) {
console.log('sql result ' + data);
$(data).each(function(key, value) {
basketCount += parseInt(value.qty);
console.log('basketCount loop ' + basketCount);
});
$('#cartCount').html(basketCount);
console.log('basketCount ' + basketCount);
}
});
}
问题
basket-count.php没有看到通过add-product.php添加的数据
结果
控制台总是返回“Data Added”,我从add-product.php
回应对于我尝试添加的第一个产品,控制台显示......
sql result null
basketCount 0
对于第二个产品,控制台显示......
sql result [object Object]
basketCount loop 1
basketCount 1
它似乎总是落入一个条目,不能考虑刚刚添加的内容。
尝试解决方案
1)完成调用basketCount:而不是成功:
2)添加setTimeout延迟,设置为5秒,直到我看到“数据已添加”在“basketCount运行”之前被记录,所以我假设时间不是问题。
3)将basketCount功能与add-product.php合并,我想避免使用,因为basketCount用于其他领域,例如remove-product.php和update-basket.php等
思想
根据控制台,在添加数据并且函数本身正常工作后,即使在IE中,basketCount函数似乎也在运行,所以我很困惑为什么它没有看到刚刚插入的数据
非常感谢任何指导!
答案 0 :(得分:0)
好的,所以解决方案3显然昨天没有好好尝试,因为今天早上它在IE中运行良好,虽然一些篮子计数代码重复添加,删除,更新,取消等功能,从我读过的内容,制作多个ajax请求可能更有效。