2015-02-07 2 views
3

Я использую переменную сеанса в PHP для управления текущим языком на многоязычном сайте. Для достижения того, что я хочу, я использую значок флага, который при нажатии (jQuery) сообщает lang_json.php, чтобы переключить переменную сеанса на новый язык.jQuery и ajax для установки переменной сеанса в PHP

Я не получаю ошибки на стороне JQuery:

var sendData = 'en'; 

$.ajax({ 
    type: "POST", 
    contentType: "application/json; charset=utf-8", 
    url: "lang_json.php", 
    data: ({newLang: sendData}), 
    dataType: "json", 
    success: function (msg) { 
     alert('Success'); 
    }, 
    error: function (err){ 
     alert('Error'); 
    } 
}); 

Но файл PHP не устанавливает переменную сеанса:

lang_json.php:

<?php 

// Session variables 
session_name('aklogin'); // Starting the session 
session_start(); 

if(isset($_POST['newLang'])){ 
    $_SESSION['current_lan'] = $_POST['newLang']; 
}else{ 
    $_SESSION['current_lan'] = "Not Posting"; 
} 

?> 

Сеанс переменная возвращает «Not Posting».

+1

как вы это тестируете? –

+1

Можете ли вы попробовать: данные: ({"newLang": sendData}), С "newLang" в кавычках? Похоже, он пытается использовать переменную там, которая не существует. Не вызывает ли ошибка в панели JavaScript на этой строке кода? – DelightedD0D

+0

На панели JavaScript нет ошибок. – Architect

ответ

2

Вы утверждаете, вы отправляете JSON-сервер, но:

  • Вы не
  • РНР не настроен на прием JSON

Удалить contentType: "application/json; charset=utf-8",, затем jQuery установит правильный тип контента, и PHP заполнит $_POST.

+0

Удаление, что решило проблему. – Architect

0

я продолжал играть с боковой JQuery, и это то, что работает:

переменная
var sendData = 'en'; 

$.ajax({ 
    type: 'POST', 
    url: 'app/pro/pro_lang_session_json.php', 
    data: {'newLang': sendData}, 
    success: function (msg) { 
     alert(sendData); 
    }, 
    error: function (err){ 
     alert('Error'); 
    } 
}); 

Сеанс устанавливает «ан» с этим кодом.

Благодарим за помощь! @DelightedDOD