Почему товар добавляется в корзину не с первого раза?

Здравствуйте! Если из какой-либо категории добавить товар в корзину, то он добавляется со второго раза. При первом клике открывается корзина с надписью "Ничего не куплено!", при втором товар успешно добавляется. Самое интересное, что это происходит через раз.
5d55bd88dc6ae649372166.png

<div id="cart" >
  <div class="heading">
       <a><span id="cart-total" data-total="<?php echo $all;?>"><?php echo $text_items; ?></span></a></div>
  <div class="content">
    <?php if ($products || $vouchers) { ?>
    <div class="mini-cart-info">
      <table class="simplecheckout-cart">
        <thead>
            <tr>
                <th class="image">Наименование товара</th>
                <th class="quantity"><span title="Количество">Кол-во</span></th>
                <th class="price">Цена</th>
                <th class="remove"></th>
            </tr>
        </thead>
        <?php foreach ($products as $product) { ?>
        <tr>
          <td class="image"><?php if ($product['thumb']) { ?>
             <?php foreach ($product['option'] as $option) {
             if ($option['oimage']) $product['thumb'] = $option['oimage'];
               }?>
              <div class="image"><a href="<?php echo $product['href']; ?>"><img src="<?php echo $product['thumb']; ?>" alt="<?php echo $product['name']; ?>" title="<?php echo $product['name']; ?>" /></a></div>
              <a href="<?php echo $product['href']; ?>"><?php echo $product['name']; ?></a>
              <?php } ?></td>
          <td class="name" style="display:none;">
            <div>
              <?php foreach ($product['option'] as $option) { ?>
              - <small><?php echo $option['name']; ?> <?php echo $option['value']; ?></small><br />
              <?php } ?>
            </div></td>
          <td class="quantity"><?php echo $product['quantity']; ?>&nbsp;x&nbsp;</td>
          <td class="total"><?php echo $product['total']; ?>&nbsp;</td>
          <td class="remove"><img src="catalog/view/theme/default/image/remove-small.png" alt="<?php echo $button_remove; ?>" title="<?php echo $button_remove; ?>" onclick="(getURLVar('route') == 'checkout/cart' || getURLVar('route') == 'checkout/checkout') ? location = 'index.php?route=checkout/cart&remove=<?php echo $product['key']; ?>' : $('#cart').load('index.php?route=module/cart&remove=<?php echo $product['key']; ?>' + ' #cart > *'); $('.line_fix #cart').load('index.php?route=module/cart&remove=<?php echo $product['key']; ?>' + ' #cart > *');" /></td>
        </tr>
        <?php } ?>
        <?php foreach ($vouchers as $voucher) { ?>
        <tr>
          <td class="image"></td>
          <td class="name"><?php echo $voucher['description']; ?></td>
          <td class="quantity">x&nbsp;1</td>
          <td class="total"><?php echo $voucher['amount']; ?></td>
          <td class="remove"><img src="catalog/view/theme/default/image/remove-small.png" alt="<?php echo $button_remove; ?>" title="<?php echo $button_remove; ?>" onclick="(getURLVar('route') == 'checkout/cart' || getURLVar('route') == 'checkout/checkout') ? location = 'index.php?route=checkout/cart&remove=<?php echo $voucher['key']; ?>' : $('#cart').load('index.php?route=module/cart&remove=<?php echo $voucher['key']; ?>' + ' #cart > *'); $('.line_fix #cart').load('index.php?route=module/cart&remove=<?php echo $product['key']; ?>' + ' #cart > *');"" /></td>
        </tr>
        <?php } ?>
      </table>
    </div>
    <div class="mini-cart-total">
      <table>
        <?php foreach ($totals as $total) {
   if( $total['title'] === 'Сумма' ) continue;
?>
        <tr>
          <td><b><?php echo $total['title']; ?>:</b></td>
          <td><strong><?php echo $total['text']; ?></strong></td>
        </tr>
        <?php } ?>
      </table>
    </div>
    <div class="checkout"><a href="/index.php?route=checkout/simplecheckout" id="simplecheckout_button_confirm"><?php echo $text_checkout; ?></a></div>
    <?php } else { ?>
    <div class="empty"><?php echo $text_empty; ?></div>
    <?php } ?>
  </div>
</div>


Ссылка на сайт:
https://vk.cc/9HzlsZ
  • Вопрос задан
  • 140 просмотров
Пригласить эксперта
Ответы на вопрос 2
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
хз, у вас там просто какой-то ацкий жесть твориться... по одному клику у вас срабатывает 4 раза событие(или это 4 разных запроса, но зачем?). По этому копаться что и как там происходит никто не будет. Легче все снести и переписать.

UPD: у вас уходит 4 запроса, один с айдишником товара, в ответ получающий json с данными о добавленном товаре. Затем запрос о получении последнего товара в корзину в виде хтмл(3 раза), из которых один выполняется быстрее чем вы внесли в корзину данные(и получает ответ корзина пуста). Иногда он опережает 2 других запроса, и тогда все ок, более медленные запросы потом заменяют нет товара на товар в корзине. Иногда нет, и получается лажа.
Перепишите так чтобы в ответе сразу в первом запросе возвращалось содержимое корзины.
Ответ написан
@rustam_kuliev88
То что Вы скинули код это код цикла корзины, который разбирает товар, вы скиньте код где происходит событие по клику по иконке корзины, вот там то вся логика, скорее всего при клике купить, уходит ajax запрос с данными о товаре, ищите модель куда уходит после клика, там то вся проблема и кроется.

вот Вам get куда уходит все ?route=checkout/cart/add
ищите его скорее всего в кейсе, не понятно просто как устроена логика, но четко видно обработчик куда уходит, да и странно вообще почему вы отдаете его get запросом, сделайте ajax запрос
Ответ написан
Ваш ответ на вопрос

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

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