开发者问题收集

当使用 ajax 更新购物车商品数量时,获取 window.checkout.quoteData 或商店代码是未定义错误

2021-11-24
3091

我已经创建了一个具有自由文本排序功能的自定义页面,并调用自定义 添加到购物车 API 将商品添加到购物车。

添加商品后,我需要使用更新的数量来更新购物车商品数量。我尝试使用

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

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

但它抛出了错误: 未捕获的类型错误:无法读取 quote.js:34 处未定义的属性“quoteData”

并且

url-builder.js:12 未捕获的类型错误:无法读取 url-builder.js:12 处未定义的属性“storeCode”

这里缺少什么吗?

我参考了 https://magento.stackexchange.com/questions/210517/error-javascript-define-magento2-window-checkout-quotedata-or-store-code-are-u ,但没有任何有效的方法解决方案。

2个回答

问题是 quoteData 位于 window.checkoutConfig 中 - 此数据只会在结帐页面上设置,您不会在自定义页面上加载许多必需的 js 模块来正确设置此数据。

这可能是有用的阅读: https://www.yireo.com/blog/2017-08-20-do-not-depend-on-window-checkoutconfig

Andrew
2021-11-25

我能够使用以下代码在我的场景中实现这一点。它可能会帮助某些人

require([
       'Magento_Customer/js/customer-data'
    ], function (customerData) {
        var sections = ['cart'];
        customerData.invalidate(sections);
        customerData.reload(sections, true);
    });
stefun
2021-11-25