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'];
  }
  • Вопрос задан
  • 978 просмотров
Пригласить эксперта
Ответы на вопрос 2
PavelK
@PavelK
Идентификатор сессии передаётся?
Ответ написан
nazarpc
@nazarpc
Open Source enthusiast
У вас сессия при AJAX запросе точно стартует?
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы