如何使用 jQuery AJAX $.post 存储 PHP $_SESSION 变量?

Posted

技术标签:

【中文标题】如何使用 jQuery AJAX $.post 存储 PHP $_SESSION 变量?【英文标题】:How to use jQuery AJAX $.post to store PHP $_SESSION variables? 【发布时间】:2010-12-07 01:42:17 【问题描述】:

救命!

我无法让 AJAX 为我工作。我有一个分页画廊,每个图像下方都有复选框,如果用户在页面之间移动,我需要将复选框值存储在会话变量中,因此当他们随时提交表单时,它将包含所有页面中的所有选中值。

我正在使用这个 jQuery 代码:

$(document).ready(function() 
    $(".gal-nav").click(function() 
        $.post("form-data-holder.php", $("#gallery-form").serialize());
    );
);

form-data-holder.php 文件是这样写的:

<?php

    $_SESSION['saved'] = "true";

    foreach ($_POST as $key=>$value ) 
        if ( $key !== "submit" ) 
            $value = htmlentities(stripslashes(strip_tags($value)));
            $_SESSION[$key] = $value;
        
    

?>

我有两个问题——

1) 如何从 serialize() 函数中获取复选框值?我认为我还需要使用 value[] 之类的东西来获取该数组,然后我猜想将每个都存储为单独的会话变量——除非我可以将数组存储为 $_SESSION 变量?

2) 在我搞砸之前,我添加了那行 $_SESSION['saved'] = "true";到 php 脚本,然后我在我的画廊页面上回显 $_SESSION 键和值,以查看 AJAX 请求是否正常工作。它不是。当我返回页面时,$_SESSION['saved'] 不会添加到回显的 $_SESSION 变量列表中。

任何帮助将不胜感激!

【问题讨论】:

【参考方案1】:

您需要在 form-data-holder.php 文件中调用 session_start()。

每次进行 ajax 调用时,您都在向服务器请求一个新页面,该页面不知道原始页面中设置的任何变量。

【讨论】:

抱歉,会话已经开始,因为用户必须登录才能看到画廊。 是的,但是当你进行 ajax 调用时,它会加载一个新的 php 页面,从新开始,所以你也需要在那里调用它。 嗯,好的,我添加了 到 form-data-holder.php 文件的顶部——没有变化。我是否必须以某种方式将该会话与另一个会话相关联? 通常情况下,如果您没有使用会话名称或其他任何特殊方式启动会话。您确定 form-data-holder.php 已打开/找到吗? 您可以禁用错误显示并启用对文件的错误记录。这实际上是对实时代码的要求。

以上是关于如何使用 jQuery AJAX $.post 存储 PHP $_SESSION 变量?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 jQuery AJAX $.post 存储 PHP $_SESSION 变量?

如何使用 JQuery Ajax AngularJs 制作 post req

如何使用 ajax Post 方法在没有 jQuery 的情况下提交用户输入

如何在 jQuery ajax 请求中使用带有 post 方法的超时属性?

如何使用 WCF 自托管处理 Ajax JQUERY POST 请求

jQuery中的ajax问题