Как можно обновить мой сеанс с помощью ajax?

Я использую сеанс для настройки языка

if(!isset($GLOBALS['lang'])){
$GLOBALS['lang'] = 'en';
}

Тогда я пользуюсь ajax обновить это:

var lang = 'no';

$.ajax({
type: "POST",
url: url,
data: {
lang : lang
},
success: function (data) { (...) }
});

Вызываемый файл выглядит так:

global $lang;

if(strlen($_POST['lang']) == 2 ){
$lang = $_POST['lang'];
$result = array('lang_set' => $lang);
echo json_encode($result);
}

Но моя глобальная сессия не изменилась. Я предполагаю, что это связано с тем, что lang.php использует другой экземпляр сеанса.

Я использую WordPress, поэтому я смотрю, могу ли я использовать некоторые встроенные функции для этой цели. Но мне интересно, могу ли я использовать сессии PHP для отслеживания выбранного языка? Или я должен использовать другой метод, такой как добавление выбранного языка в мой URL?

ОБНОВИТЬ
Благодаря Ghost, я заставил это работать. Если вы используете WordPress, я делаю следующее в functions.php:

// Initialize session
if(session_id() == '') {
session_start();
}

// Set lang session with default language
if(!isset($_SESSION['lang'])){
$_SESSION['lang'] = 'no';
}

//globals
$GLOBALS['lang'] = $_SESSION['lang'];

2

Решение

Если вы хотите, чтобы они сохранялись во всем приложении, используйте сессии:

session_start();
if(!isset($_SESSION['lang'])){
$_SESSION['lang'] = 'en';
}

Тогда с другой:

session_start();

if(strlen($_POST['lang']) == 2 ){
$_SESSION['lang'] = $_POST['lang'];
$result = array('lang_set' => $_SESSION['lang']);
echo json_encode($result);
}
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]