Доброго времени года!
Не могу никак разобраться с простой, казалось бы, проблемой. Есть сайтик, на котором нужно дописать изменение валюты на странице (рубли/евро/доллар), при помощи 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'];
}