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

AJAX更新购物车数量时报window.checkout.quoteData或store code未定义错误

报错原因

两个报错均由自定义页面未加载Magento Checkout模块依赖的全局配置对象导致:

  • 第一个报错是因为window.checkout.quoteData全局对象未初始化,quote.js运行时读取不到该属性
  • 第二个报错是因为window.checkout.storeCode全局参数未定义,url-builder.js无法生成正确的接口请求地址
修复步骤

1. 在页面布局中注入Checkout全局配置

在你的自定义页面对应的布局XML文件中,添加Checkout侧边栏块,用于自动初始化所需的全局配置:

<referenceContainer name="content">
    <!-- 注入Checkout全局配置初始化块 -->
    <block class="Magento\Checkout\Block\Cart\Sidebar" name="custom.cart.config" template="Magento_Checkout::cart/sidebar.phtml"/>
</referenceContainer>

2. 修正JS逻辑

补充购物车数据依赖,加购成功后同时重载购物车本地缓存,保证计数同步更新:

require([
    'jquery',
    'Magento_Customer/js/customer-data',
    'Magento_Checkout/js/action/get-totals'
], function ($, customerData, getTotalsAction) {
    'use strict';

    var deferred = $.Deferred();
    getTotalsAction([], deferred);

    // totals更新完成后重载购物车缓存,同步计数
    deferred.done(function () {
        customerData.reload(['cart'], true);
    });
});

3. 补充兜底配置(可选)

如果添加布局块后仍有配置未加载的问题,可以在JS逻辑执行前手动初始化全局配置容器:

if (typeof window.checkout === 'undefined') {
    window.checkout = window.checkoutConfig || {};
}
注意事项
  • 不要在自定义页面禁用Magento默认的RequireJS配置,保证基础组件可以正常加载
  • 需在自定义加购接口返回成功响应后再执行上述更新逻辑,避免购物车数据未同步就触发计数更新

内容的提问来源于stack exchange,提问作者stefun

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 08:15:01