我在 PHP 中使用 session 变量来管理多语言站点中的当前语言。为了实现我想要的效果,我使用了一个标志图标,当单击它时 (jQuery) 它会告诉 lang_json.php 将 session 变量切换到新语言。
我在 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 文件没有设置 session 变量:
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";
}
?>
session 变量返回“未发布”。
最佳答案
您声称您正在发送服务器 JSON,但是:
- 你不是
- PHP 未设置为接收 JSON
删除 contentType: "application/json; charset=utf-8",
,然后 jQuery 将设置正确的内容类型,PHP 将填充 $_POST
。
关于javascript - jQuery 和 ajax 在 PHP 中设置 session 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28388188/