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

Здравствуйте! Если из какой-либо категории добавить товар в корзину, то он добавляется со второго раза. При первом клике открывается корзина с надписью "Ничего не куплено!", при втором товар успешно добавляется. Самое интересное, что это происходит через раз.
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
  • Вопрос задан
  • 143 просмотра
Пригласить эксперта
Ответы на вопрос 1
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
хз, у вас там просто какой-то ацкий жесть твориться... по одному клику у вас срабатывает 4 раза событие(или это 4 разных запроса, но зачем?). По этому копаться что и как там происходит никто не будет. Легче все снести и переписать.

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

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

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