vikkyshostak
@vikkyshostak
< This head full of dreams.

Почему не меняются данные в $_SESSION при AJAX запросе?

Доброго времени года!

Не могу никак разобраться с простой, казалось бы, проблемой. Есть сайтик, на котором нужно дописать изменение валюты на странице (рубли/евро/доллар), при помощи AJAX. Делаю по такой схеме:

0. Задаю валюту по умолчанию (если не задана).
1. Создаю три ссылки с data-аттрибутом, в котором указываю алиас нужной валюты (rouble/euro/dollar).
2. В JS файле делаю $.ajax при клике на эти ссылки.
3. Запрос уходит через POST в PHP файл, где происходит запись в сессионную переменную $_SESSION['currency'] алиас кликнутой валюты (из data-аттрибута).
4. После успешного запроса (success) просто делаю location.reload();

Но в результате, ничего не перезаписывается. Выводится всё тот же, заданный по умолчанию, алиас. Что я делаю не так?!

Листинг index.php

<?php 
  session_start(); 
  if (!isset($_SESSION['currency'])) $_SESSION['currency'] = 'rouble';
?>
...
<a href="#" class="currency__change" data-currency="dollar">Dollar</a>
<a href="#" class="currency__change" data-currency="euro">Euro</a>
<a href="#" class="currency__change" data-currency="rouble">Рубли</a>
...

Листинг ajax.js

;(function($, window, document, undefined) {
  // On document ready.
  $(document).ready(function() {
    // Change currency.
    $('.currency__change').on('click', function(event) {
      // Prevent default.
      event.preventDefault();
      // Send AJAX request.
      $.ajax({
        type: 'POST',
        url: 'Ajax.php',
        data: { 'currency': $(this).data('currency') },
        success: function() {
          location.reload();
        },
        error: function() {
          alert('Error! Try again later.');
        }
      });
    });
  });
})(jQuery, window, document);

Листинг Ajax.php

<?php
  session_start();
  // Change currency.
  if ($_POST['currency']) {
    unset($_SESSION['currency']);
    $_SESSION['currency'] = $_POST['currency'];
  }
  • Вопрос задан
  • 965 просмотров
Пригласить эксперта
Ответы на вопрос 2
PavelK
@PavelK
Идентификатор сессии передаётся?
Ответ написан
nazarpc
@nazarpc
Open Source enthusiast
У вас сессия при AJAX запросе точно стартует?
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
Бюро Цифровых Технологий Санкт-Петербург
от 120 000 до 180 000 ₽
03 мая 2024, в 00:45
1000 руб./за проект
02 мая 2024, в 23:56
2000 руб./за проект