сохранение и настройка того, как далеко веб-страница прокрутилась вниз

#php #html #scroll

#php #HTML #прокрутка

Вопрос:

Я создаю shopping kart на PHP. В данный момент пользователь нажимает кнопку «Добавить в корзину», чтобы добавить товар. затем эта кнопка запускает отдельный php-скрипт для сохранения товара в корзине, после чего пользователь возвращается на страницу покупок. все, что пользователь видит, это прокрутку страницы обратно до верхней части экрана.

Есть ли в php способ, с помощью которого я могу сохранить, как далеко страница прокрутилась вниз, а затем установить это при перезагрузке страницы, чтобы пользователю казалось, что страница не изменилась… Спасибо

Ответ №1:

Должно выполняться в браузере с использованием некоторого javascript. получите позицию перед отправкой от var top = window.scrollTop и передайте ее на сервер (или сохраните в cookie), затем во время загрузки вызовите window.scrollTo(top) , чтобы восстановить позицию.

Ответ №2:

Судя по всему, я думаю, вам было бы лучше использовать AJAX для отправки товара в корзину. Таким образом, пользователь нажимает на ссылку, и вы можете вывести небольшое сообщение, которое изменяет общую сумму корзины после ее сохранения, и пользователю не нужно полностью перезагружать страницу.

Если вы используете jQuery, должно сработать что-то вроде следующего: (Не тестировалось)

 $('.add-to-cart').click(function(){
     $.ajax({
          url:'cart.php?product='   sku,
          success:function(){
               // Change the cart total and pop a message here
          }
     });
});
  

Ответ №3:

Без использования AJAX:

browse.php:

 <form action="cart.php" method="POST">
  <div id="product_12345">
      <!-- Product Info -->
      <button name="add_item" type="submit" value="12345">Add To Cart</button>
  </div>
  <div id="product_12346">
      <!-- Product Info -->
      <button name="add_item" type="submit" value="12346">Add To Cart</button>
  </div>
</form>
  

cart.php:

 <?php
if (isset($_POST['add_item'])) {
    // code to add product to cart
    header('Location: /browse.php#product_'   (int)$_POST['add_item']);
}
?>