【发布时间】:2011-12-19 15:07:01
【问题描述】:
我相信这可能是this question 的重复,但我不太明白答案
我想在我的脚本/页面的开头创建一个新对象。该页面有多个步骤,我想为每个步骤使用带有单独 PHP 文件的 Ajax。但其中一些步骤需要对对象进行修改。
这样做的正确方法是什么。我正在使用 JQuery Ajax。
它基本上是一个结帐页面,但后期阶段是根据所选选项生成的。
【问题讨论】:
我相信这可能是this question 的重复,但我不太明白答案
我想在我的脚本/页面的开头创建一个新对象。该页面有多个步骤,我想为每个步骤使用带有单独 PHP 文件的 Ajax。但其中一些步骤需要对对象进行修改。
这样做的正确方法是什么。我正在使用 JQuery Ajax。
它基本上是一个结帐页面,但后期阶段是根据所选选项生成的。
【问题讨论】:
您想要做的是保持数据可通过多个连接访问 - 持久化数据。在 PHP 中真的很简单,只需使用会话即可。
首先,如果您想访问持久性数据(或存储任何数据),您需要启动一个会话。这样做:
session_start();
从那时起,您添加的任何内容都将被存储(除了一些例外情况 - 例如,存储 MySQL 连接可能不会很好地工作)。不过不用担心 - 数据只会为用户保留。例如,其他人将无法访问其他人的购物车或表单中的进度。
以下是针对会话存储数据的方式:
$obj = new MrClass();
$_SESSION['form_object'] = $obj;
稍后,像往常一样访问它:
$_SESSION['form_object']->someMethod();
但请记住:每个 AJAX 请求都必须以 session_start() 开头。
【讨论】:
如果您需要数据在多个请求中保持不变,您应该使用会话或 cookie。
【讨论】:
您可以让对象代表一个数据库表。如果它是一个用户对象,请创建您的用户表,并通过 JSON 请求使用 ID 加载该对象来修改该对象。从本质上讲,每当您发出 AJAX 请求时都将其取消冻结,然后对其进行修改,然后将其放回数据库中。
或者,您可以将其粘贴到$_SESSION,但请记住,您的对象必须能够完全序列化自己。
【讨论】: