php - 在 ajax 调用期间创建 session (php-xajax)

标签 php session xajax

除非完全必要,否则我需要避免在应用程序中创建 session 。

我注意到,如果 session 未启动,xajax 调用将无法正常工作 :(。我的第一种方法是在 xajax 函数的开头创建 session (如果它不存在),但是,它不用户第一次调用时不工作(自 session 创建后第二次工作)。

有什么方法可以处理/修复这种情况?

编辑:示例代码:

function example ($parameters) {
    if (!isset($_COOKIE["PHPSESSID"])) {
        session_start(); // we create the session if it didn't exist previously 
    }
    $response = new XajaxResponse();
    .....
    return $response;
}

我的想法是在用户进行 ajax 调用时创建 session 。在这种情况下,我第一次调用“示例”函数时它不起作用。第二个没问题,我认为是因为 session 已创建。

编辑:你好,我注意到 chrome 和 explorer 下的一个问题 :(。没有收到第一个 ajax 调用(我没有得到回答)。这意味着用户需要点击两次才能收到正确的答案(与例如弹出窗口)

谢谢!

最佳答案

问题似乎是您没有调用 session_start() if $_COOKIE['PHPSESSID'] 已设置,因此未针对当前 ajax 请求初始化 session 。您必须在每个使用 session 的脚本上调用session_start()——它不仅仅是为了 session 初始化。

function example ($parameters) {
    // If this function uses the session, you MUST call session_start()
    // Don't do it conditionally.
    session_start(); 

    $response = new XajaxResponse();
    .....
    return $response;
}

如果您所有的 ajax 处理函数都使用 session ,那么您最好在包含它们的文件顶部调用 session_start()。如果您不希望 session 在 ajax 调用之前加载,则将它们隔离到它们自己的 PHP 脚本中,同时您不在它们最初加载的主脚本上调用 session_start()

关于php - 在 ajax 调用期间创建 session (php-xajax),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12800653/

相关文章:

php - 我们可以将@yield 的值存储在变量中吗

php - 无法在 ListView 项中显示图像

php - 简化我的 Jquery xajax 之类的功能

PHPExcel;来自 MySQL 的数组问题

javascript - Jquery Datepicker 卡在同一年

php - 当局域网没有互联网连接时,smarty加载时间太长

php删除数组中的 "empty"值

javascript - AngularJS 常规查找

asp.net - session 变量对象在回发时被删除 - ASP.NET

hibernate - 如果我们有 session.evict(),为什么我们需要 javax.persistence.EntityManager.detach()?