7

是否可以在将订单项属性添加到购物车后更改它们?(通过普通表单提交,还是通过 AJAX?)

我已经尝试使用“properties [MyProperty]”键对 /cart/change 进行 POST,但到目前为止还没有运气。这与 line 参数一起表示唯一的行项目。

有任何想法吗?或者它只是一个直接的“不”?

4

1 回答 1

6

使用 Shopify 的 API,您不能使用 cart/change.js 来更改订单项的属性。原因是 cart/change.js 使用“属性”来查找您想要的订单项。API 文档省略了这一点。这是一个例子:

当我使用以下 url 编码参数对 cart/add.js 进行 POST 时:

quantity=9403&id=278440178&properties%5Bmy-property%5D=property%20BAR

回应将包括,

"properties":{"my-property":"property BAR"}

当我继续向 cart/change.js 发布 POST 以将属性从 BAR 更改为 FOO 时,

id=278440178&properties%5Bmy-property%5D=property%20FOO

然后响应将包括,

"properties":{"my-property":"property BAR"}

也就是说,我无法以这种方式更改行项目属性。您可能会怀疑这是因为 cart/change.js API 有一些技巧,但事实并非如此。

请注意,当我尝试通过向 cart/change.js 发布 POST 并指定 来删除订单项时quantity=0,如下所示:

quantity=0&id=278440178&properties%5Bmy-property%5D=property%20FOO

由于该属性property FOO不属于任何项目(我的购物车property BAR现在只有一个项目),因此该项目不会从购物车中删除。另一方面,如果我这样做:

邮政:quantity=0&id=278440178&properties%5Bmy-property%5D=property%20BAR

该项目被正常删除。

结论:在 cart/change.js 中,shopify 使用 line-item 属性的方式与使用 'id' 的方式相同,即查找要更改数量的 line item。就像您不能使用 cart/change.js 来更改订单项的 id 一样,您也不能使用它来更改订单项的属性。

于 2013-02-20T02:25:07.593 回答