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');
                        }
                    });
                });
        });

它有效,但我唯一的问题是它基本上做了一个获取请求,并且在标头网络响应中我得到了这个:

网络响应

这不会发布添加到购物车的网址并将产品添加到购物车。

有谁知道如何做到这一点?

干杯,马克

4

2 回答 2

1

尝试查看是否在 PHP 代码中实际触发了 POST 操作。似乎它应该工作。

'async' 参数也是多余的,因为您已经在调用 A-jax 函数

于 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 回答