Во-первых, убедись, что все переменные принимаются именно постом. Возможно ты $act принимаешь через джет
Во-вторых, метод $.ajax вполне отличный. Весь мир его юзает, а у тебя не выходит. Угадай, кто виноват?
В-третьих, убедись, что ты правильно передаешь в функцию значения page и elem. Строки должны быть обязательно в одинарных кавычках, числа можно и просто как число. Иначе прийдет
undefined либо
null.
Попробуй так:
function add2cart(page, elem) {
if ($(elem).hasClass('in-cart')) {
window.location.href = '/cart.html';
} else {
$.ajax({
type: 'POST',
url: '/ajax-cart.htm',
cache: false,
data: 'act=add&product='+page,
dataType: 'html',
success: function(content)
{
$('#cart-line').html(content);
$(elem).addClass('in-cart');
}
});
}
}