0

ajax 呼び出しでアンカー href を投稿できるアクションを作成しようとしています。まず、アンカータグはバックエンドの設定で作成されるため、フォーム内などに配置できないため、機能しません。

ボタンのマークアップは次のとおりです。href は js で動的に追加されます。

<a class="js-add-to-cart button buying-options buy-button" data-products-in-cart="<?= $products_in_cart ?>">
                Select a size
            </a>

現在、アンカーを投稿するこのコードが機能しています。

jQuery(function(){
                jQuery('a.buy-button').click(function(event) {
                    event.preventDefault();
                    jQuery.ajax({
                        url: jQuery(this).attr('href'),
                        type: 'POST',
                        async: true,
                        beforeSend: function(){
                            jQuery('#result').hide();
                            jQuery('#ajax-loader').show();
                        },
                        error: function(xhr, status, thrown){
                            alert(xhr + ',' + status+ ',' + thrown);
                        },
                        complete: function(){
                            jQuery('#ajax-loader').hide();
                        },
                        success: function(data) {
                            jQuery('#result').empty().append(data);
                            jQuery('#result').fadeIn('slow');
                        }
                    });
                });
        });

それは機能しますが、私の唯一の問題は、基本的に get リクエストを実行し、ヘッダーのネットワーク応答でこれを取得することです:

ネットワーク応答

これは、カートに追加する URL を投稿せず、製品をカートに追加します。

これを行う方法を知っている人はいますか?

乾杯、マーク

4

2 に答える 2

1

POST アクションが実際に PHP コード内でトリガーされるかどうかを確認してください。それはうまくいくはずです。

また、すでにA-jax関数を呼び出しているため、「async」パラメーターは不要です

于 2013-10-01T15:23:36.687 に答える
0

おそらく.post()省略形を使用すると役立ちます (また、コードをクリーンアップします)。

jQuery の $ エイリアスを使用していないのは、それを認識していないためであり、競合の問題のためではないと想定しています。

$(function(){
  $('a.buy-button').click(function(event) {
    event.preventDefault();
    $('#result').hide();
    $('#ajax-loader').show();
    $.post($(this).attr('href'), function (data) {
      $('#ajax-loader').hide();
      $('#result').empty().append(data);
      $('#result').fadeIn('slow');
    });
  });
});
于 2013-10-01T15:20:10.440 に答える