ajax调用期间的cookie与进行ajax调用的页面上的cookie不同

时间:2015-06-03 16:46:31

标签: php ajax cookies

首先,这一切都发生在同一个基本域上,而且我没有在网站上将任何ajax调用发送到不同的URL。

我每隔10秒从我网站上的任何页面到php类进行简单的ajax调用,并根据用户登录时分配的cookie中的用户信息,它将更新last_active datetime值为该用户的数据库中的当前时间戳。这主要用于在我当前在其屏幕上打开网站的用户的页面上显示。

我注意到如果我注销一个用户,然后以其他用户身份登录,则在登录后cookie会更新。但是,当我进行相同的ajax调用以更新last_active datetime时,它似乎正在更新以前登录用户的时间。

我发现在ajax调用期间和仅在ajax调用期间,cookie仍然包含之前登录用户的信息。

我以前从来没有遇到过这个问题,所以我不确定是什么原因引起的,或者如何修复它而不需要另外的ajax调用来手动将cookie设置为正确的用户。

至于示例代码,我想这是我举个例子的最好方法。

在我的index.php上,我包含了一个脚本index.js。在脚本中,我让它每隔10秒对app文件夹中的php脚本进行一次ajax调用。

$.ajax({
    type: "POST",
    url: "app/ajax.php",
    data: {
        'class': 'App_User',
        'function': 'updateLastActive',
        'user_account_id': user_account_id
    },
    dataType: "json",
    success: function(data) {
    }
});

上面的代码将使用给定的数据值调用app / ajax.php。基本上在ajax.php中,它将启动App_User类,然后以user_account_id作为参数运行updateLastActive函数。

正如我所提到的,整个ajax调用过程运行正常。唯一的问题是,例如,如果我在ajax调用期间从App_User类中执行var_dump($ _ COOKIE),而不是在ajax调用之前或之后从index.php执行var_dump($ _ COOKIE),则信息是不同的。

从前端角度来看,这是我在跟踪cookie信息时看到的内容。

  1. 我以用户A登录该站点,其user_account_id为12
  2. index.php中的var_dump将user_account_id显示为12,这是正确的。
  3. 进行Ajax调用,调用期间App_User类中的var_dump将user_account_id显示为12,这是正确的。
  4. 我退出,然后以用户B身份登录该网站,其user_account_id为10
  5. index.php中的var_dump将user_account_id显示为10,这是正确的
  6. 进行Ajax调用,调用期间App_User类中的var_dump将user_account_id显示为12。

0 个答案:

没有答案