Ajax请求不返回Internet Explorer初始AJAX请求期间添加的数据

时间:2017-03-19 17:20:01

标签: javascript php jquery mysql ajax

我在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函数似乎也在运行,所以我很困惑为什么它没有看到刚刚插入的数据

非常感谢任何指导!

1 个答案:

答案 0 :(得分:0)

好的,所以解决方案3显然昨天没有好好尝试,因为今天早上它在IE中运行良好,虽然一些篮子计数代码重复添加,删除,更新,取消等功能,从我读过的内容,制作多个ajax请求可能更有效。