【问题标题】:Simple AJAX function to set SESSION variable设置 SESSION 变量的简单 AJAX 函数
【发布时间】: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。

【问题讨论】:

标签: javascript php ajax session


【解决方案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";
}?>

要记住的要点:-

  1. 使用 Ajax 一次只能发出 1 个页面请求。
  2. 请求随时可以是POSTGET
  3. 您从$.post() 发送的变量必须在服务器端脚本中正确处理{在我的情况下为session.php}。
  4. 您也可以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。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-08-25
  • 1970-01-01
  • 2013-02-07
  • 1970-01-01
  • 2011-05-12
  • 1970-01-01
  • 2017-04-08
相关资源
最近更新 更多