AVAV84, если на сервере единый обработчик состояния корзины (краткого и расширенного представления), то выгоднее всегда возвращать JSON.
Пусть сервер хранит корзину таким образом:
$basket = [
10 => ['quantity' => 2, 'price' => 200],
20 => ['quantity' => 5, 'price' => 150],
30 => ['quantity' => 3, 'price' => 300]
];
if(array_key_exists($_POST['id'], $basket)) {
$basket[$_POST['id']]['quantity'] += (int)$_POST['mode'];
exit(json_encode(['quantity' => array_sum(array_column($basket, 'quantity')),
'total' => array_sum(array_map('array_product', $basket))]
)
);
}
На клиенте элементы с идентификаторами quantity и total отображают количество товара в корзине и их сумму соответственно.
Все кнопки добавления/уменьшения товара имеют имя класса mode, режим операции в атрибутах data-mode: 1 и -1 соответственно, и единый обработчик. Тогда:
$('div.mode').click(function() {
$.ajax({
....,
dataType: 'json',
data: {id: получить в чем-то хранящийся id товара, mode: $(this).data('mode')},
success: function(response) {
$.each(response, function(k, v) {
$('#'+k).text(v)
})
}
})
})
То есть, таким образом клиент может одним обработчиком управлять отображением как краткого так и полного представления корзины.
PS. Пример РНР для версии не ниже 5.5.