我正在尝试将 3 件商品循环添加到购物车中。Firebug 报告对“/cart/add.js”的每个单独的 ajax 调用都返回 200 OK,并且返回的 json 对象显示了正确的 variant_id 和刚刚添加的数量。但是,购物车的结果内容通常不正确 - 通常只显示 1 或 2 件,而不是预期的 3 件。
这是我的代码。
$('form[name="one-step-checkout"]').submit(function(event) {
event.preventDefault();
Shopify.clear(function(cart) {
add_items(function() {
Shopify.getCart(function(cart) {
alert('items in cart : ' + cart.items.length)
})
});
});
});
add_items = function(callback) {
add_variant_array = [];
$('form[name="one-step-checkout"]').find('div.checkout-step-options input:radio').each(function() {
if($(this).is(':checked') && $(this).attr('name') == 'price') {
var choice = $(this).val();
$('input.variant-price.' + choice).each(function() {
var variant_id = this.id;
add_variant_array.push(Shopify.addItem(variant_id, 1));
});
}
});
if (typeof callback == "function") {
$.when.apply($, add_variant_array).done(function() {
alert('done adding to cart');
});
callback();
}
};
如果我反复提交表单,购物车中的商品数量会在 1 到 3 之间变化。我唯一能想到的是,购物车在操作过程中不知何故被清空了。我认为传递给 Shopify.clear() 函数的回调直到收到成功后才执行?不?
非常感谢您的任何指点!