设置 SESSION 变量的简单 AJAX 函数
Posted
技术标签:
【中文标题】设置 SESSION 变量的简单 AJAX 函数【英文标题】:Simple AJAX function to set SESSION variable 【发布时间】:2021-10-23 18:31:23 【问题描述】:我正在用 php 构建一个网页,并希望通过单击按钮将 $_SESSION 变量从 true 更改为 false。
我知道 php 运行在服务器端,因此我需要使用 AJAX 来更改该变量。
我真正想要的是从表单按钮调用 AJAX 函数(在 AJAX 中称为方法?)的代码,然后 AJAX 脚本会更改 SESSION 变量。我真的很想避免页面重新加载。
所以,表单应该如下所示:
<form action=ajaxMethod() method="get">
<input type="submit" value="X" id="close">
</form>
这是我希望 AJAX 脚本执行的 php 版本:
function ajaxMethod()
$_SESSION["variable"] = false;
但是,对于 JS,尤其是 AJAX,我是个菜鸟,我不确定如何创建该 AJAX 方法。
尽可能简单...如果可以简单...
有什么帮助吗?
另外:我正在构建的页面是专有的,属于我正在工作的公司,因此我不能随意泄露实际代码,但上面的示例感觉就像他们描述了我的内容'想完成。如果需要,我会进一步解释。
如果可能的话,我很想避免使用 JQuery。
【问题讨论】:
Getting started with AJAX. 欢迎来到 SO。我尝试搜索“php set session variable with ajax”,并在这里发现了许多问题,其中包含用于复制粘贴的工作代码 - 你试过了吗?举几个例子:***.com/questions/46894940/…、***.com/questions/38985643/…、***.com/questions/34148408/…、***.com/questions/28388188/…。 这能回答你的问题吗? Setting PHP session variables with ajax 进行了搜索,但可能措辞错误。非常感谢您的提示,将看看我可以使用什么。 【参考方案1】:由于您不希望页面重新加载,因此无法根据需要/要求避免使用 Jquery,Ajax 是最好的方法(而 Ajax 使用 JQuery 更简单)。
我在我的许多 php webApps 中使用 Ajax 请求来更改 _SESSION
变量。
HTML:-
<!-- Include Jquery library #Important -->
<script src="https://code.jquery.com/jquery-2.1.4.js"></script>
<form>
<input type="button" value="X" id="close" onclick="changeSession();">
</form>
脚本:- JQuery and javascript both
function changeSession()
$.post("session.php", name : "session", value : "false",
function(data, status)
if(status == "success") console.log("successfully changed session variable");
else console.log("some error occurred"););
//Javascript
function changeSession()
var value="false";
var xmlHttp = new XMLHttpRequest();
xmlHttp.onreadystatechange = function()
if(xmlHttp.readyState == 4 && xmlHttp.status == 200)
alert(xmlHttp.responseText);
xmlHttp.open("post", "session.php");
xmlHttp.send(value);//Don't know how to send multiple data with this sorry, so sending only 1
PHP 文件:- session.php 在我的例子中
<?php
if(isset($_POST['name']))
//I think we have received Ajax request
if($_POST['value'] == "false") //Just to ensure the value to be changed should be false
//Now let us change session variable
$_SESSION['variable'] = "false";
?>
要记住的要点:-
-
使用 Ajax 一次只能发出 1 个页面请求。
请求随时可以是
POST
或GET
。
您从$.post()
发送的变量必须在服务器端脚本中正确处理在我的情况下为session.php
。
您也可以echo
从 php 文件中输出 text/html/json 作为 Ajax 请求的输出。
工作示例here
注意:-
工作示例中的代码可能会有所不同,因为我试图展示它的实际工作原理,但是您可以在我的 Github 中找到代码,并在下面进行进一步的查询评论。
编辑:-
为 Ajax 请求添加了 JavaScript 代码,因为您希望避免使用 JQuery。但没有为它做一个工作示例,因为我不太喜欢使用 JavaScript 的 Ajax。
【讨论】:
我想避免的不是 AJAX,而是 JQuery ;) 感谢您的努力,因为它本身教会了我很多东西! 这是一个简单的 AJAZ 在我的回答中忘记 JQuery 没什么,相信我这比XMLHttpRequest
@4bZürd 更简单
您写道,不使用 jquery 就无法避免页面加载。但是,JQuery jsut 不是一个以更简单的方式使用固有 JS 的框架吗?如果是这样,是否可以将 JQuery 代码重写为标准 JS?就像我在原帖中所说的那样:我是 Web 开发这部分的菜鸟,所以我需要问一些愚蠢的问题;)
编辑了答案并添加了 JavaScript code for Ajax request
作为您的需要,但我仍然建议您至少在 JQuery 中学习 Ajax,这很简单 @4bZürd
再次感谢您!我一直在考虑学习 JQuery,但我还没有开始使用它,而且我对使用我不理解的代码感到不舒服。但我将您的鼓励铭记于心,一旦有时间和机会,我就会开始研究 JQuery。以上是关于设置 SESSION 变量的简单 AJAX 函数的主要内容,如果未能解决你的问题,请参考以下文章
从不同端口上的 AJAX 访问时,$_SESSION 变量为空 [重复]
PHP/Ajax 简单聊天 - 将管理员用户名颜色设置为红色
jQuery Ajax Post - 无法使用回调函数设置全局变量?