Codeigniter を使用して ajax ベースのショッピング カートを構築していますが、追加/削除機能は完全に機能します。複数のアイテムを追加するためのオプションを追加しようとしていますが、機能しません。
これが私が使用しているマークアップです。最適な設計かどうかはわかりませんが、ajax 以外の機能で動作しているので、問題ないはずです。
<form action="cart/add_multiple" method="post" accept-charset="utf-8">
<input type="hidden" name="items[0][id]" value="3571310" />
<input type="hidden" name="items[0][qty]" value="1" />
<input type="hidden" name="items[0][price]" value="59.00" />
<input type="hidden" name="items[0][name]" value="London" />
<input type="hidden" name="items[0][heb_name]" value="לונדון" />
<input type="hidden" name="items[0][full_price]" value="59.00" />
<input type="hidden" name="items[0][discount_price]" value="59.00" />
<input type="hidden" name="items[1][id]" value="7397903" />
<input type="hidden" name="items[1][qty]" value="1" />
<input type="hidden" name="items[1][price]" value="29.00" />
<input type="hidden" name="items[1][name]" value="London Triple" />
<input type="hidden" name="items[1][heb_name]" value="לונדון טריפל" />
<input type="hidden" name="items[1][full_price]" value="29.00" />
<input type="hidden" name="items[1][discount_price]" value="29.00" />
<input type="submit" name="add_multi" value="add to cart" /></form>
ajax スクリプトは次のとおりです。
$(document).ready(function() {
$(document).on("submit", "div#winning_combo_small form", function () { //catches every click on the submit button of the "add to cart" form
var items = $(this).serialize();
alert(items);
$.post(base_url + "cart/add_multiple", {items: items, ajax: '1' },
function(data){
if (data =='true')
{ // Interact with returned data
$.get(base_url + "cart", function(cart){ // Get the contents of the url cart/show_cart
$("#cart_sidebar").html(cart);
})
$.get(base_url + "cart/count_items", function(items){
$("#cart_items").html(items);
})
}
});
return false;
})
});
add_multiple
しかし、関数はデータを配列ではなく文字列として受け取るため、機能していません。データを配列に変換するには、何らかの方法でデータをデコードする必要がありますか? ヘブライ文字が邪魔をして、すべてを台無しにしますか?
ajax を使用せずに通常の方法でフォームを投稿すると、アイテムがカートに追加され、すべてが正常に機能します。では、通常の投稿と ajax 投稿の違いは何ですか?