@nata32

Как по ajax поменять название кнопки?

Добрый вечер, подскажите, как поменять название кнопки после отправки по ajax ?
Есть кнопка
<button type="button" id="button-cart" class="btn btn-primary btn-lg btn-block"><img src="/catalog/view/theme/default/image/icons/cart.svg" width="30" height="27" alt="button_cart">В КОРЗИНУ</button>

дописываю в название
<div id="total_carts" style="display: inline-block;">В КОРЗИНУ</div>

в запрос прописываю
if (json['success']) {
     $('#total_carts').html('В КОРЗИНЕ ' + json['total_cart'] + ' шт.');
}

и нечего не меняется
Спасибо.
  • Вопрос задан
  • 568 просмотров
Пригласить эксперта
Ответы на вопрос 3
во-первых выведите, что вам приходит в ответе от сервера: 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 уникален для документа.

если вам нужно менять в другом элементе текст -- то в коде слушателя работайте уже с ним.
Ответ написан
Комментировать
cyber-jet
@cyber-jet
Потому что json это объект, а вы работаете с ним как с массивом. Если у вас в ответе и правда json, то нужно так:

if(json.success) {
   ... json.total_cart...
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы