コールバックの正常な動作に問題があります。ここに私が達成しようとしているものがあります:カートに追加したい2アイテムがありますので、2つの非同期POSTリクエストを作成します。これらの2つのPOSTリクエストが完了したら、カートの部分ビューを更新したいと思います。問題は、1つのアイテムだけがカートに追加されたように見えるということです。デバッグすると、2つのアイテムが追加されます。どんな提案や助けも素晴らしいだろう。前もって感謝します!ここjQueryを使用してAJAX呼び出しが行われたときのコールバック
は私のコードです:
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();
});
})
});
'$を'はここではアドバイスしていません –
[jQuery $ .post deferred]の可能な複製(http://stackoverflow.com/questions/6433696/jquery-post-deferred) –
@SterlingArcher $。done()中にあったが、POSTのうちの1つしか処理されていないようだ要求。両方のPOST要求が完了するまで、どのように待機するのですか? –