Как сохранить измененный значения после перезагрузки страницы?

Здравствуйте. Сайт на 1С- Битрикс, на детальной странице товара есть ссылка "В корзину" при нажатии происходит добавления товара в корзину. Необходимо после нажатия изменить текст "В корзину" на "В корзине" и сменить ссылку.
Таким образом изменю текст и значение href:
$('.add__tocart').click(function() {
	$(this).text('В корзине');
	$(this).href('/cart/');
	return false;
});

Все срабатывает, но добавление товара происходит с перезагрузкой страницы и в итоге ничего не меняется. Как можно изменить значения и после перезагрузки странницы они сохранились?
  • Вопрос задан
  • 1616 просмотров
Пригласить эксперта
Ответы на вопрос 4
skobkin
@skobkin
Гентушник, разработчик на PHP и Symfony.
Обновление надписи на кнопке при клике - одно. В целом, вам логично либо сделать отправку в корзину через AJAX, либо надпись на кнопке должен менять сервер при повторной загрузке страницы. Ведь он знает, что этот товар лежит в корзине.
Сохранять статус вам вообще не нужно.
Ответ написан
Комментировать
Dreamka
@Dreamka
Web-разработчик.
js тут не причем. Обрабатывайте на серверной стороне и выводите нужную ссылку в зависимости от наличия товаров в корзине
Ответ написан
Комментировать
erniesto77
@erniesto77
oop, rb, py, php, js
JQuery-Session-Plugin

как вариант
$('#addItem').on('click', function(event) {

	var cartItems = $.session.get('cartItems');
	if (!cartItems) cartItems = [];

	var newItem = getNewItem();
	cartItems.push(newItem);

	$.session.set('cartItems', cartItems);
});

jQuery(document).ready(function($) {
	
	var cartItems = $.session.get('cartItems');
	if (!cartItems) cartItems = [];

	console.log(cartItems);
});
Ответ написан
Комментировать
kalbac
@kalbac
Wordpress Developer Full-Stack
Автор, Алексей Царапкин и Алексей Скобкин правильно вам говорят. Если вы даже сделаете так как вам предлагает erniesto77, всё равно придётся парсить из массива данные в PHP обработчик с помощью AJAX.
Поэтому, лучше сразу сделать этот обработчик на странице добавления товара в корзину
(function($){
$(document).on('click', '.add__tocart', function( event ) {
  event.preventDefault();
  var _self = $(this);
  if( xhr ) xhr.abort();
  var xhr = $.ajax({
   method: 'post',
   url: '/add_to_cart.php',
   success: function( response ) {
     if( response ) {
        _self.text('В корзине');
        _self.href('/cart/');
     }
   }
  });
});
}(window.jQuery);


Не стоит копировать код один в один. Писал на быструю руку, на коленке.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы