首页 > 解决方案 > 我收到一个错误“Snipcart.api.setCurrency 不是函数”,我认为它可能来自 Accept: application/json

问题描述

我正在帮助某人将 Snipcart 集成到他们的 Squarespace 商店中,并且他们想要使用多币种功能。对于我拥有的每个 Snipcart.api... 函数,我都收到一个错误“Snipcart.api.setCurrency 不是函数”。

我认为这可能与我的代码中没有包含“接受:应用程序/json”有关,但我不知道在哪里以及如何使用它。

<script>
  document.addEventListener('snipcart.ready', function(){
    console.log('ready!');
      Snipcart.subscribe('cart.ready', function() {
        $('#currency').val(Snipcart.api.getCurrentCurrency());
      });

      Snipcart.subscribe('currency.changed', function (currency) {
        $('#currency').val(currency);
      });

      $(function() {
        $('#currency').change(function () {
          Snipcart.api.setCurrency($(this).val());
        });
      });
  });
</script>

标签: jqueryjsonapisquarespacesnipcart

解决方案


旧线程,但对于仍然卡住的线程,这里是代码(在 snipcart v3.0.31 上使用)。请注意,当您更改货币时,购物车不会自动更新。

<script>
document.addEventListener('snipcart.ready', function() {
    
    const select = document.getElementById('currencies');
    select.addEventListener('change', () => {
    Snipcart.api.session.setCurrency(select.value);
    });
    
    Snipcart.store.subscribe(updateSelectedCurrency);

    function updateSelectedCurrency() {
        const state = Snipcart.store.getState();
        const currency = state.cart.currency;
    document.getElementById('currencies').value = currency;
    }
});                                                                           
</script>

推荐阅读