cart attributesを削除するコードについて

Topic summary

課題: カートページでの特定操作時に、Shopifyのcart attributes(チェックアウト完了まで保持されるカスタム属性)をjQueryなしで削除したい。

解決策: ShopifyのAJAX Cart APIを利用し、cart/update.js へPOST。FormDataで attributes[キー] に空文字(“”)を送信して当該属性をクリアする。fetchで送信し、response.json()で結果を確認。公式ドキュメントの参照案内あり。

条件付き実行: クリックイベントのハンドラ内でif文により条件分岐し、そのブロック内で上記fetch処理を呼び出せばよい。非同期制御は.thenチェーンで足り、async/awaitは必須ではない。

結果・現状: 提示コードで属性の削除は確認済み。条件付き呼び出しの実装方針も明確化。依頼者は解決に至り、スレッドは実質クローズ。

Summarized with AI on January 7. AI used: gpt-5.

@Anonymous_876e90207c84eec074dc8f1fbdf1c908

クリック時に条件分岐後に呼び出しをしたいのですが、こちらのコードを普通に関数の中に入れれば良いでしょうか?

下記のようにコードを丸々if文で囲むのでしたら、async/awaitのことは気にされなくて大丈夫です。

document.querySelector('.button').addEventListener('click', function{
  if (何らかの条件){
    var formData = new FormData();
    formData.append("attributes[hoge]", "");
    fetch(window.Shopify.routes.root + 'cart/update.js', {
      method: 'POST',
      body: formData
    })
    .then(response => response.json())
    .then(data => console.log(data));
  }
});

ご参考まで。

(キュー田辺)

1 Like