使用XMLHttpRequest时如何保持PHP中生成的对象

时间:2012-04-05 15:32:22

标签: php javascript ajax

我正在开发具有主文件index.php的网页,如下所示:

include('UserClass.php');
include('html/top.php');
$user = new User();
if (isset($_POST['user'], $_POST['pass']))
{
   $user->login($_POST['user'], $_POST['pass']);
}

if ($user->logged != 1)
{
   include('html/forms/login.html');
   include('html/forms/register.html');
   include('html/calendar.php');
}

include('UserClass.php'); include('html/top.php'); $user = new User(); if (isset($_POST['user'], $_POST['pass'])) { $user->login($_POST['user'], $_POST['pass']); } if ($user->logged != 1) { include('html/forms/login.html'); include('html/forms/register.html'); include('html/calendar.php'); }

这是我的ajax脚本:

function nextMonth()
{
   var xmlhttp = new XMLHttpRequest();
   xmlhttp.onreadystatechange=function()
   {
      if (xmlhttp.readyState==4 && xmlhttp.status==200)
      {
         document.getElementById("text").innerHTML=xmlhttp.responseText;
      }
   }
   xmlhttp.open("GET", "html/calendar.php", true);
   xmlhttp.send();
}

当我点击触发nextMonth()的按钮时出现错误:

  

致命错误:在第41行的/var/www/.../html/calendar.php中的非对象上调用成员函数check_date()

这意味着对象用户不存在,所以我不能使用User类中的方法。在calendar.php中创建用户的新实例是不可能的,因为它是注销用户,每当他尝试将calndar视图更改为下个月时。在执行所有这些AJAX操作时,如何从index.php保存/传递对象?谢谢!

1 个答案:

答案 0 :(得分:0)

你需要php层是有状态的,这是通过会话完成的。