Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Отображение результата работы скрипта на всех страницах сайта (корзина) (https://javascript.ru/forum/jquery/60626-otobrazhenie-rezultata-raboty-skripta-na-vsekh-stranicakh-sajjta-korzina.html)

melst 11.01.2016 23:00

Отображение результата работы скрипта на всех страницах сайта (корзина)
 
Здравствуйте.
Совсем запутался и опять нуждаюсь в помощи.

Делаю корзину для сайта. Задумал основную страницу корзины и блок "быстрой" корзины на jquery на каждой странице чтобы отображалась без перезагрузки при добавлении товара.
Вот впал в ступор как сделать, чтобы результат скрипта отображался на всех страницах сайта, а то при обновлении пропадает все.
Схема работы:
По нажатию кнопки "В корзину" некоторые параметры со страницы и id товара передаю в php обработчик, делаю выборку из БД и оттуда уже json'ом обратно на страницу.
Делать, чтобы при обновлении страницы или переходе скрипт опять срабатывал, а то скрипт срабатывает только после нажатия на кнопку?
Котел не варит сегодня уже... Помогите)))

melst 12.01.2016 10:41

$result=mysql_query("SELECT product_name, char_diam, char_cell, product_price FROM product WHERE id=$id");
$arr=mysql_fetch_array($result);
$name= $arr['product_name'];
$str=array("name"=>$name);
echo json_encode($str, JSON_UNESCAPED_UNICODE);


function cartsuccess(data) {
            alert(data);
            var chars = JSON.parse(data);
            $('#cart_left').html(chars.name);
        }


как данные полученные функцией cartsuccess использовать вне события click() ? ajax отправляет запрос только по нажатию кнопки

Lemme 12.01.2016 11:47

https://developer.mozilla.org/en/doc...sessionStorage

<div></div>
<script>
   // эмуляция AJAX запроса
  function someAwesomeAjaxFunction(cb) {
  	setTimeout(function() {
      cb('Some awesome response');
    }, 1000);
  }
  
  // Эта функция отвечает за вывод данных в нужный элемент
  function putSomeAwesomeData(injectTo) {
    //  Получаем данные из sessionStorage
    var data = sessionStorage.getItem('someAwesomeResponse');
    
    // Если данные  sessionStorage есть
    if (data) {
      // Добавляем данные из sessionStorage в необходимый элемент на странице
      injectTo.innerHTML = data;
      // выход из функции.
      return;
    }
    // Если данных в sessionStorage нет, то получаем их AJAX запросом.
    someAwesomeAjaxFunction(function(response) {
      // Добавляем полученные данные в необходимый элемент на странице
      injectTo.innerHTML = response;
      // Записываем данные в sessionStorage
      sessionStorage.setItem('someAwesomeResponse', response);
    });
  }
  
  putSomeAwesomeData(document.querySelector('div'));
</script>

melst 12.01.2016 12:34

да, я смотрел в эту сторону, но засомневался в кроссбраузерности этого способа. Вы считаете, что с PHP в данном случае не связываться?

Lemme 12.01.2016 12:58

Цитата:

но засомневался в кроссбраузерности этого способа
http://caniuse.com/#search=sessionStorage

Цитата:

Вы считаете, что с PHP в данном случае не связываться?
1) Проверяете есть ли данные в sessionStorage
2) Если данные есть, то выводите данные из sessionStorage
3) Если данных нет, то получаете данные AJAX запросом и записываете их в sessionStorage и выводите.

что непонятного в примере?

p.s добавил комментарии

При первой загрузке - получаем данные от сервера AJAX запросом.
При обновлении страницы - получаем данные из sessionStorage

melst 13.01.2016 19:49

Разобрался. Но только если одна позиция в корзине.
Многомерный массив нужно делать , я так понял. В sessionStorage пытаться запихнуть или в json все пихать в php обработчике, а потом в скрипте парсить и проверять?


Часовой пояс GMT +3, время: 20:31.