1

同じページに複数の製品があるWebサイトのページがあります。

Ajaxをカートに追加してそれぞれで機能させようとしています(それぞれに独自のフォームがあります)が、それぞれにJquery関数を記述せずに、ある製品と他の製品を区別する方法を理解できません。

以下のスクリプトは、フォームに独自のIDがあるため、ページ上の1つの商品に対して機能しますが、1つのページに20の商品がある場合、これは機能しません。

function update_cart(data, statusText, xhr, $form)
{
    if (data.success)
    {
        $("input[name=XID]").val(data.XID);
        $('.cart_total').html(data.cart_total); 
    }
    return true; 
}
var cart_form_options = {
    success: update_cart,
    dataType: 'json'
}
jQuery(document).ready(function($){
    $("#add_to_cart_submit").click(function(){

        $("#add_to_cart_form").ajaxForm(cart_form_options);
        $("#add_to_cart_form").submit(); 
    })
});

どうもありがとう!!

4

2 に答える 2

0

各製品の「カートに追加」ボタン/フォームに、製品 ID などの一意の属性を付与します。次に、「カートに追加」ボタンをクリックすると、その属性を取得して、追加する正確な製品を見つけることができます。

<form id="add_to_cart_form" productID="product1">

次にjsで:

var product = $("add_to_cart_form").attr("productID");
于 2012-07-05T23:02:35.443 に答える
0

ああ…分かった気がする。少し遊んでみるとうまくいきました。

結果のコード:

<script type="text/javascript">
                var $j = jQuery.noConflict();
                $j(document).ready(function () {
                $j('.add_to_cart_form').submit(function() {
                    $j('.add_submit', this).val('Processing...');
                    var url = $j(this).attr('action');
                    var data = $j(this).serialize();
                    $j.post(url, data, function() {$j('.cart-wrap').load('{site_url}cart');
                        $j('.mini-cart').load('{site_url}cart');
                        $j('.add_submit').val('add to cart');
                        $j('.cart-thankyou').slideDown( 500, function() {});
                        $j('.cart-thankyou').delay(1500).slideUp(400);
                    });
                    return false;
                });
            });
            </script>
于 2012-07-06T00:12:03.340 に答える