【问题标题】:Empty session array in ajax requestajax 请求中的空会话数组
【发布时间】:2010-11-01 09:30:29
【问题描述】:

我正在构建一个订单系统,并且有 2 个不同的部分用于添加产品。在这两个部分中,产品都是通过 ajax 请求插入的,该请求返回购物篮。在第一部分中,产品被直接添加(没有任何选项)。这部分工作正常。 在第二部分中,用户可以为订购的商品添加偏好。当用户单击链接时,会打开一个 Facebook 弹出窗口。在这里,用户可以选择偏好。当用户提交表单时,将对同一脚本进行 ajax 调用。于是我查看了 $_SESSION 变量,它似乎是空的...

会话启动,会话名称和会话ID与真实页面相同,但数组为空。当我刷新页面时,我添加的数据也会添加到 $_SESSION 变量中,但是当我进行 ajax 调用时不会...我在 url 中添加了会话名称和 id,但它仍然不起作用.

有人知道什么地方会出错吗?该代码通常可以正常工作...

会话在名为 connection.php 的文件中启动。 在篮子里我添加了这段代码:

if(!session_id()) {
    $id = $_GET[session_name()];
    session_id($id);
    session_start();
}

这是添加到javascript中的:

 //config:
$.sid = '<?php echo(session_name() . "=" . session_id()); ?>';

// in the request function ($(this) is the form):
var qry = '?action=add&' + $(this).serialize() + '&' + $.sid;

Gr

【问题讨论】:

  • 你能显示一些代码吗?尤其是您将会话 ID 添加到 Ajax URL 的部分?你在 Ajax 脚本中使用session_start() 吗?
  • 是的,我已经开始了会话。添加代码。
  • 这些会话来自同一个客户端吗?
  • 是的,它们是:请求都来自同一个窗口/页面/用户。我已经在 chrome 和 firefox 中对其进行了测试。两者都不起作用,所以它也不是特定于浏览器的。
  • @VeeWee 你能尝试通过做一些测试输出来确认会话是否在 Ajax 脚本中继续吗?

标签: php jquery ajax session


【解决方案1】:

如果 session_start 之前存在

session_start();
....
$id = $_GET[session_name()];
if (session_id() != $id) {
  session_write_close();
  session_id($id);
  session_start();
}

【讨论】:

    猜你喜欢
    • 2011-02-12
    • 2016-05-05
    • 2012-03-28
    • 1970-01-01
    • 1970-01-01
    • 2014-05-13
    • 1970-01-01
    • 1970-01-01
    • 2011-03-20
    相关资源
    最近更新 更多