во-первых выведите, что вам приходит в ответе от сервера: console.debug(json);
уточню, что метод .debug есть только в FireFox, для Chrome нужно использовать .log.
во-вторых, JSON это может быть объект, а значит нужно проверять json.success.
в-третьих, у вас в кнопке один HTML ID, а в обработчике ответа -- другой.
т.е. вы слушаете событие на одном элементе, а меняете в другом.
если иное вам не нужно, уточните вопрос.
вам коде слушателя сделать примерно следующее для работы с одной (нажатой) кнопкой:
$('button#button-cart').on(
'click',
(event) => {
event.preventDefault();
let button = event.currentTarget;
$.ajax(
{
//параметры запроса
success: (response) => {
if(response.success) {
button.html('текст кнопки');
}
}
}
);
}
);
но это уберёт картинку.
вам в идеале придётся получить значение содержимого тега кнопки и _заменить_ нужный текст.
вообще это будет работать криво, т.к. вы опираетесь на HTML ID, а по вашей вёрстке не видно, что этот HTML ID уникален для документа.
если вам нужно менять в другом элементе текст -- то в коде слушателя работайте уже с ним.