在ajax调用期间创建会话(php xajax)

在ajax调用期间创建会话(php xajax),php,session,xajax,Php,Session,Xajax,除非完全必要,否则我需要避免在应用程序中创建会话 我注意到,如果会话未启动,xajax调用将无法正常工作:(.我的第一种方法是在xajax函数开始时创建会话(如果它不存在),但是,在用户第一次调用调用时它就不工作(自会话创建后第二次工作) 有没有办法处理/解决这种情况 编辑:示例代码: function example ($parameters) { if (!isset($_COOKIE["PHPSESSID"])) { session_start(); // we c

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

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

有没有办法处理/解决这种情况

编辑:示例代码:

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调用时创建会话。在这种情况下,我第一次调用“示例”函数时它不起作用。第二次调用时它正常,我想是因为会话是创建的


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


谢谢!

问题似乎在于,如果设置了
$\u COOKIE['PHPSESSID']
,则您没有调用
会话\u start()
,因此会话没有针对当前ajax请求初始化。您必须调用
会话\u start()
在每个使用会话的脚本上—它不仅仅用于会话初始化

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\u start()
。如果您不希望在ajax调用之前加载会话,则将它们分离到各自的PHP脚本中,而不调用
session\u start()
在他们最初加载的主脚本上。

对于会话,您必须在不重新加载页面的情况下重新加载页面会话无法创建。。。。。
Ajax在无需重新加载整个页面的情况下非常有用。

您需要发布代码。每当您第一次调用
session\u start()时,就会创建PHP会话
,无论这是由AJAX请求还是由浏览器发出的普通静态请求发起的。Thx,我添加了一个更详细的示例Thx很多!!,是的,你是对的。我必须隔离会话启动。您好,我注意到chrome和explorer下有一个问题:(.没有收到第一个AJAX调用(我没有得到回答).Than mens用户需要点击两次才能收到正确的答案(例如弹出窗口)@yauros您需要使用Chrome开发者控制台查看AJAX请求,并查看发生了什么或出现了什么错误。我无能为力,尤其是发布的代码太少。(但不要在这里发布更多信息-这应该是一个新问题)Thx,我将创建一个新的帖子