在PHP&amp ;;中实例化对象时遇到问题Ajax定制购物车

时间:2010-04-14 00:13:43

标签: php ajax oop

这是我第一次玩ajax和物体,所以请放轻松我

我有3个页面组成了测试者购物车。

1)带有'add''删除'按钮和ajax代码的页面,用于调用第2页的PHP函数。这是带有HTML输出的实际用户页面。

2)带有PHP购物车函数调用的页面,从第1页的ajax接收$ _GET请求,并从第3页调用cart对象的函数,将结果返回到第1页。

3)带有购物车对象定义的页面。

这是我相信我遇到的问题。目前我在第1页和第1页上有'session_start()' pgs 1& 2上的购物车定义(第3页) 2.我只在第2页上定义了'$ _SESSION [cart] = new Cart'。但是,似乎每次我点击一个ajax函数(例如,每次pg 2重新加载),它似乎都在重写$ _SESSION ['cart' ]重复一次,因此每次新点击时它总是空的(即使它显示该点击的结果)

但是,如果我没有在第2页定义'$ _SESSION [cart] = new Cart',我会收到错误:

  

致命错误:main()[function.main]:   该脚本试图执行一个方法   或访问不完整的财产   宾语。请确保上课   定义“购物车”的   你试图操作的对象   在 unserialize()获取之前加载   调用或提供__autoload()   函数加载类定义   在   /home3/foundloc/public_html/booka/carti.php   第17行

有什么建议吗?每当我的第2页(php购物车功能页面)被ajax调用时,我怎么能停止重新创建我的购物车?

2 个答案:

答案 0 :(得分:0)

你能这样做吗?

session_start();
if ( ! isset($_SESSION['cart'])) {
    $_SESSION['cart']= new Cart;
}

答案 1 :(得分:0)

根据您对alex' answer的评论:在致电Cart之前,您需要包含session_start()课程的定义。

您可以看到,当您调用session_start()时,会话数据被反序列化并放入全局$_SESSION哈希值。因此,它事先需要任何外部类定义。