我正在尝试创建一个允许我使用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');
}
});
});
});
它有效,但我唯一的问题是它基本上是一个获取请求,在标题网络响应中我得到了这个:
这不会发布添加到购物车网址并将产品添加到购物车。
有谁知道如何做到这一点?
干杯, 标记
答案 0 :(得分:1)
尝试查看是否在PHP代码中实际触发了POST操作。好像应该有效。
'async'参数也是多余的,因为你已经调用了A-jax函数
答案 1 :(得分:0)
或许使用.post()
shorthand会帮助您(并清理您的代码)。
我假设您没有使用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');
});
});
});