Привет! Прикручиваю счетчик товаров в корзине, который должен обновляться при клике на эту кнопку: PHP: <button onclick="addToCart('<?php echo $product['product_id']; ?>');" class="btn btn-shopping-cart btn-outline-inverse">В корзину <i class="fa fa-shopping-cart"></i> </button> Все работает с таймером, а со слушателем не хочет, в чем может быть причина?: PHP: // Спан выводит количество товаров<span class="hidden-lg hidden-md hidden-sm" id="product-count" style="color:#FFFFFF; background-color: #282c34; border-radius: 50%; padding: 2px 5px; margin-left: -10px;"><?php echo $product_count; ?></span><script>function updateProductCount() { let xhr = new XMLHttpRequest(); xhr.open('GET', window.location.href, true); xhr.send(); xhr.onreadystatechange = function () { if (xhr.readyState === XMLHttpRequest.DONE && xhr.status === 200) { let productCountElement = document.getElementById('product-count'); productCountElement.innerHTML = xhr.responseText.match(/id="product-count"[^>]*>([\s\S]*?)<\/span>/)[1]; } }}// С таймером все работает// setInterval(updateProductCount, 5000);// С этим кодом не работаетlet updateButtons = document.querySelectorAll('.btn.btn-shopping-cart.btn-outline-inverse');for (let i = 0; i < updateButtons.length; i++) { updateButtons[i].onclick = function() { updateProductCount(); };}</script> Opencart 1.5.6.4, PHP 5.4.16 Может быть это из-за старой версии php?
Вы бы пример привели, а то как-то абстрактно и ещё не совсем понятно, что у вас там возвращается в данных
Вообще, ещё раз взглянул в код, там вообще расчёт только на один товар "let productCountElement = document.getElementById('product-count');". Без сайта, банально не посмотреть.
Ну и разница скорее всего в задержке по времени, хотя и код кривой (потому что если несколько товаров, то как-то странно). Добавление если происходит через js-скрипт, то некорректно пытаться сразу загрузить туже страницу и вытащить оттуда количество, так как страница в updateProductCount может прийти раньше, чем товар добавится в корзину.
А как можно сделать? Есть код счетчика в header.tpl: PHP: <?php$product_count = 0;$products = $this->cart->getProducts();foreach ($products as $product) { $product_count += $product['quantity'];}?><span id="product-count"><?php echo $product_count; ?></span> Пробую запихнуть это в common.js в функцию addToCart, которая на кнопке висит: PHP: $('#product-count').html(json['$product_count']); Но естественно ничё не работает)
Если в json нет product_count то не заработает. И зачем переменную php в common.js ? Конечно работать не будет. Есть же пример в коде json['total']