【发布时间】:2026-01-20 23:05:02
【问题描述】:
我无法使回调正常工作。这是我想要实现的目标:我有 2 件商品要添加到购物车中,因此我发出了 2 个异步 POST 请求。一旦这两个 POST 请求完成,我想更新购物车的部分视图。问题是似乎只有 1 件商品被添加到购物车中。当我调试它时,添加了 2 个项目。任何建议或帮助都会很棒。提前致谢!
这是我的代码:
var cart = []
function AddToCart(input) {
return $.ajax({
method: 'POST',
url: '/cart/add.js',
data: input,
dataType: 'json'
})
.done(function(data) {
return data;
});
}
$("#addToCart").click(function() {
$('#capsContainer input:checked').each(function() {
var cartItem = {
id: $(this).val(),
quantity: 1
}
cart.push(cartItem);
});
var test1 = AddToCart(cart[0]);
var test2 = AddToCart(cart[1]);
$.when.apply(test1, test2).done(function() {
$.getJSON('/cart.js', function(data) {
$('.cart-item-count').text(data.item_count);
$('.cart-item-price').html(formatMoney(data.total_price));
ShowCart();
});
})
});
【问题讨论】:
-
$.ajax返回一个已经被延迟的jqXHR对象,因此这里不建议使用$.when -
@SterlingArcher 我在使用 $.when 之前这样做了,其中 $.when 中的回调在 done() 中,但它似乎只处理了一个 POST 请求。你如何让它等到两个 POST 请求都完成?
-
您可以考虑使用名为 ajaxq.js 的库,该库可用于将 ajax 请求分组排队,然后您可以将请求嵌入到 $ 的回调部分中.postq() 请求遵循与 $.post() 相同的语法
标签: javascript jquery ajax shopify .when