You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

购物车元素移除后,页面重载代码location.reload()插入位置咨询

购物车移除元素后页面重载的位置分析

首先梳理你的代码逻辑,先明确核心前提:如果所有操作(修改购物车数组、更新状态、写入Cookie、关闭弹窗)都是同步执行,location.reload()的正确位置是放在所有同步操作的最后,但要先修复原代码里的语法错误——原代码缺失大括号、分号,会导致逻辑执行异常。

修改后的完整代码(同步场景)

$('#r_btc').on('click', function(a) {
    a.preventDefault();
    var b = jQuery.grep(ecomm._vCRT, function(f) {
        return f.s == pCRT._rIDS
    });
    if ('x' == b[0].t) {
        ecomm._vCRT = jQuery.grep(ecomm._vCRT, function(f) {
            return f.s != pCRT._rIDS
        });
        b[0].b = jQuery.grep(b[0].b, function(f) {
            return f != pCRT._rIDB
        });
        if (0 < b[0].b.length) {
            ecomm._vCRT.push({
                s: b[0].s,
                t: b[0].t,
                b: b[0].b,
                o: b[0].o,
                p: b[0].p
            });
            ecomm.updBStat(pCRT._rIDB, pCRT._rIDS, 1, 0);
        } else {
            ecomm._vCRT = jQuery.grep(ecomm._vCRT, function(f) {
                return f.s != pCRT._rIDS
            });
        }
    } else {
        jQuery.grep(b, function(f) {
            var g = jQuery.grep(f.b, function(h) {
                return h[0] != pCRT._rIDB[0]
            });
            b[0].b = '';
            b[0].b = g;
        });
        ecomm._vCRT = jQuery.grep(ecomm._vCRT, function(f) {
            return f.s != pCRT._rIDS
        });
        if (0 < b[0].b.length) {
            ecomm._vCRT.push({
                s: b[0].s,
                t: b[0].t,
                b: b[0].b
            });
        } else {
            ecomm._vCRT = jQuery.grep(ecomm._vCRT, function(f) {
                return f.s != pCRT._rIDS
            });
        }
        ecomm.updBStat(pCRT._rIDB, pCRT._rIDS, 1, 0);
    }
    pCRT._rIDB = 0;
    pCRT._rIDS = 0;
    pCRT._rPVP = 0;
    pCRT.iCRT();
    ecomm.chkSTCK();
    app.cCookie('cart', JSON.stringify(ecomm._vCRT), 30);
    $('#confirmation-reveal').foundation('close');
    // 所有同步操作完成后执行页面重载
    location.reload();
});

异步场景特殊处理

如果ecomm.updBStat是异步AJAX请求(用于同步后端购物车状态),直接放在最后会导致页面在后端数据更新完成前就刷新,出现数据不一致问题。这种情况下需要给updBStat添加回调函数,在异步请求成功后再执行后续操作和重载:

  1. 修改updBStat调用逻辑:
// 替换原代码中的ecomm.updBStat调用,添加回调参数
ecomm.updBStat(pCRT._rIDB, pCRT._rIDS, 1, 0, function() {
    // 异步操作完成后执行剩余同步步骤+重载
    pCRT._rIDB = 0;
    pCRT._rIDS = 0;
    pCRT._rPVP = 0;
    pCRT.iCRT();
    ecomm.chkSTCK();
    app.cCookie('cart', JSON.stringify(ecomm._vCRT), 30);
    $('#confirmation-reveal').foundation('close');
    location.reload();
});
  1. 确保ecomm.updBStat内部在AJAX请求成功时触发传入的回调函数。

内容的提问来源于stack exchange,提问作者Luis Pérez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 07:17:04