AJAXでattributeを更新しても元に戻ってしまう

解決済
遊覧客
22 3 12

AJAXでカートattributeを更新しても元に戻る現象に悩まされています。

レスポンスデータでは正常に更新されているようですが、ページを遷移または更新すると元に戻ってしまいます。

原因は何でしょうか。何か仕様を見落としているのでしょうか。

詳しい方がおられましたらご教授いただけましたら幸いです。

 

/// 最初に格納したデータ(/cart/update.js)
{
  "attributes":{"id":"100027"}
}

 

 

/// 更新したデータ(/cart/update.js)
{
  "attributes":{"id":"100002"}
}

 

 

/// レスポンスデータ (/cart.js) ※ここではちゃんと更新されている
.....
"attributes": {
  "id": "100002"
},
.....

 

 

/// 更新またはページを遷移してから取得したデータ(/cart.js) ※元に戻ってしまう
.....
"attributes": {
  "id": "100027"
},
.....

 

 

<!-- Liquidの表示でも同様です。 -->
{{ cart.attributes.id}}  //100002

 

 

0 件の「いいね!」
探検家
49 13 72

cart.attributesは、INPUTタグ等の入力項目ですので、Ajaxで非同期更新したとしてもサーバーに保存されることはないと思います。

方法としては、javascriptでcookieに値を保存しておき、cookie取得して表示するか、

APIを使ってMetafieldsを更新して表示するか、どちらにしても一時保存するアクションが必要かと思います。

 

遊覧客
22 3 12

ご回答ありがとうございます。

お返事が遅れてすみません。

下記のShopify公式リファレンスには「Update cart attributes」という項目がありますが、これは実質機能しないものでしょうか?

https://shopify.dev/docs/themes/ajax-api/reference/cart#update-cart-attributes

0 件の「いいね!」
Community Manager
Community Manager
823 176 280

成功

cart attributes については、下記で説明しておりますが、
https://www.shopify.jp/blog/partner-shopify-theme-customize-cart-attributes-line-item-property-custo...

ここで書いているLiquidを使った方法も、カートで入力したのちに、購入へ進むのform submitで初めて反映されるので、別の遷移や再表示をしてしまうと前の入力はクリアされてしまうと思うので、挙動としては同じになるかと思います。

つまり、update.js で設定して、そのままチェックアウトに進めば反映されるかと思います。

(検証はしていないので、ご自身でご確認ください)

Technical Partner Manager, Japan
0 件の「いいね!」
遊覧客
22 3 12

ご回答ありがとうございます。

仕様自体がそのような仕様なんですね…。

Cookie等で対応しますm(_ _)m

0 件の「いいね!」