Обновление переменной сессии
Возник вопрос, относящийся к сессиям в php. Создал простейший код выбора города на сайте. Через Ajax отправлю значение города, в файле устанавливаю этот город в переменную сессии и далее через location.reload() обновляю страницу. Проблема заключается в том, что переменная сессии при повторном выборе обновляется только если вручную перезагрузить страницу два раза. То есть я выбираю город, страница перезагружается, но значение в сессии остается старым, если я перезагружу страницу еще раз, то значение изменится на то, которое я выбрал ранее. Как можно избежать перезагрузки страницы два раза для изменения значения?
Прикрепляю код ajax запроса:
$('.city-list-item-link').click(function(){
var city = $(this).html();
$('.selected-city').html(city);
$.ajax({
type: 'POST',
url: '/ajax.php',
data: {
'method': 'city',
'city': city
},
success: function(data){
window.location.reload();
}
});
});
Код обработки в php файле:
session_start();
$method = '';
if(isset($_POST['method'])){
$method = $_POST['method'];
}
if($method == 'city'){
$city = '';
if(isset($_POST['city']) && strlen($city) < 100){
$city = $_POST['city'];
}
$_SESSION['city'] = $city;
}
Ответы (1 шт):
Сложно сказать с чем связано это поведение, но можно предположить, что страница перезагружается до того, как было установлено значение сессии и при повторной загрузке страницы, значение сессии еще старое. Можно обойтись и без перезагрузки страницы, сделав ajax-запрос, который вернет значение сессии:
$.ajax({
type: 'POST',
url: '/city.php',
success: function(data){
...
}
});
city.php:
session_start();
if(isset($_SESSION['city'])){
return $_SESSION['city'];
}