jQuery 和 ajax 在 PHP 中设置会话变量
Posted
技术标签:
【中文标题】jQuery 和 ajax 在 PHP 中设置会话变量【英文标题】:jQuery and ajax to set session variable in PHP 【发布时间】:2015-04-07 22:02:47 【问题描述】:我在 php 中使用会话变量来管理多语言站点中的当前语言。为了实现我想要的,我使用了一个标志图标,当单击它时(jQuery)它告诉 lang_json.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”。
【问题讨论】:
你是如何测试的? 您可以试试:data: ("newLang": sendData),用引号中的“newLang”吗?看起来它正在尝试使用那里不存在的变量。是不是在该行代码的 javascript 面板中抛出错误? JavaScript 面板上没有错误。 我正在通过 Chrome 开发者工具测试 jQuery。 看起来 Json 内容类型被抛弃了。 【参考方案1】:您声称您正在向服务器发送 JSON,但是:
你不是 PHP 未设置为接收 JSON删除contentType: "application/json; charset=utf-8",
,然后jQuery 将设置正确的内容类型,PHP 将填充$_POST
。
【讨论】:
【参考方案2】:我一直在玩 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');
);
会话变量使用此代码设置为“en”。
感谢您的帮助! @DelightedDOD
【讨论】:
以上是关于jQuery 和 ajax 在 PHP 中设置会话变量的主要内容,如果未能解决你的问题,请参考以下文章
为啥 Chrome 和 Firefox 以不同方式处理 jQuery ajax() 回调中设置的 javascript 变量?
为啥 Chrome 和 Firefox 以不同方式处理 jQuery ajax() 回调中设置的 javascript 变量?