2012-06-08 49 views
0

我的网站有问题。AJAX调用会话

请参阅网页:

  • 的index.php < - 在session_start()
  • /includes/functions.php
  • /modules/feedback.php < - 阅读一些$ _SESSION
  • /gui/savefeedback.php < - 读一些$ _SESSION
  • /ajaxGateway.php

在index.php中有一个链接。当我按下该链接时,会出现fancybox2弹出窗口。我将该URL传递给fancybox(/gui/savefeedback.php?somestuff=blablabla)

在那个框中,我有一个带有textarea和提交按钮的窗体。我使用$ _SESSION变量来配置一些GUI元素。在该页面中,我使用jQuery与AJAX调用,比如/ ajaxGateway?行动=反馈

AjaxGateway简单解析命令,包括/feedback.php?vote=1 &评论= AAAAAAAAA

问题!在/modules/feedback.php中,我无法读取$ _SESSION变量。

为什么?

+1

您需要为每个请求执行'session_start()'。 –

+1

*在每个页面/文件中* – OptimusCrime

+0

OptimusCrime,不,您不应该在include():d文件中调用session_start。每个请求只需调用一次。 –

回答

3

您需要该页面上的session_start();(/modules/feedback.php)。

+0

我已经在index.php中使用了session_start(),因为我使用了像index.php?page = XXX这样的链接。事实上,如果我在/modules/feedback.php中使用session_start(),我收到错误“会话已开始”... – Kaiser69

0

假设你正在使用的cookie,那么每个AJAX请求处理Cookie的完全一样,如果你曾浏览手动的URL以同样的方式...

See here了解更多信息

,确定一切工作,如果您手动浏览这些网址会发生什么?你在每个页面上都会有session_start()吗?

+0

我不知道为什么,但当我手动在该URL中有一个奇怪的东西。例如。在saveFeedback.php我必须改变include_once('../../ modules/feedback.php'); include_once('modules/feedback.php');否则我得到了一些包含错误.. – Kaiser69

+0

如果它在你的浏览器不起作用,它不会通过AJAX工作 - 所有的AJAX所做的是浏览到页面,并给出你的JavaScript代码的响应,而不是渲染它。 。在使用AJAX调用它们之前,您需要使页面正常工作。 – Basic

0

每页开头if(!isset($_SESSION)) session_start();如果你只是做session_start();它可能会引发错误,如果您的会话已在另一页上启动。