Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP使对象在ajax中全局可用_Php_Jquery_Ajax_Object - Fatal编程技术网

PHP使对象在ajax中全局可用

PHP使对象在ajax中全局可用,php,jquery,ajax,object,Php,Jquery,Ajax,Object,我相信这可能是重复的,但我真的不明白答案 我想在脚本/页面的开头创建一个新对象。这个页面有多个步骤,我想使用Ajax,每个步骤都有单独的PHP文件。不过,其中几个步骤需要对对象进行修改 正确的方法是什么。我正在使用jqueryajax 它基本上是一个签出页面,但后面的阶段是根据所选的选项生成的。如果您需要数据跨多个请求持久化,您应该使用会话或cookie 如果需要跨多个请求持久保存数据,则应使用会话或cookie 您可以使用代表数据库表的对象。如果是用户对象,则创建用户表,并通过JSON请求加载

我相信这可能是重复的,但我真的不明白答案

我想在脚本/页面的开头创建一个新对象。这个页面有多个步骤,我想使用Ajax,每个步骤都有单独的PHP文件。不过,其中几个步骤需要对对象进行修改

正确的方法是什么。我正在使用jqueryajax


它基本上是一个签出页面,但后面的阶段是根据所选的选项生成的。

如果您需要数据跨多个请求持久化,您应该使用会话或cookie

如果需要跨多个请求持久保存数据,则应使用会话或cookie

您可以使用代表数据库表的对象。如果是用户对象,则创建用户表,并通过JSON请求加载ID来修改对象。本质上,只要发出AJAX请求,就取消冻结它,然后修改它,并将其粘贴回数据库中


或者,您可以将其插入到
$\u会话
,但请记住,您的对象必须能够完全序列化自身。

您可以使用代表数据库表的对象。如果是用户对象,则创建用户表,并通过JSON请求加载ID来修改对象。本质上,只要发出AJAX请求,就取消冻结它,然后修改它,并将其粘贴回数据库中


或者,您可以将其插入到
$\u会话
,但请记住,您的对象必须能够完全序列化自身。

您试图做的是通过多个连接保持数据的可访问性-持久化数据。它在PHP中非常简单,只需使用会话即可

首先,如果要访问持久数据(或存储任何数据),需要启动会话。这样做:

session_start();
从那时起,您添加到其中的任何内容都将被存储(除了一些例外——例如,存储MySQL连接可能不会太好)。不过别担心,数据只会为用户保留。例如,其他人将无法访问其他人的购物车或表单中的进度

以下是针对会话存储数据的方式:

$obj = new MrClass();
$_SESSION['form_object'] = $obj;
稍后,只需像往常一样访问它:

$_SESSION['form_object']->someMethod();

但是请记住:每个AJAX请求都必须以
会话\u start()

开始,您要做的是通过多个连接保持数据的可访问性-持久化数据。它在PHP中非常简单,只需使用会话即可

首先,如果要访问持久数据(或存储任何数据),需要启动会话。这样做:

session_start();
从那时起,您添加到其中的任何内容都将被存储(除了一些例外——例如,存储MySQL连接可能不会太好)。不过别担心,数据只会为用户保留。例如,其他人将无法访问其他人的购物车或表单中的进度

以下是针对会话存储数据的方式:

$obj = new MrClass();
$_SESSION['form_object'] = $obj;
稍后,只需像往常一样访问它:

$_SESSION['form_object']->someMethod();

但是请记住:每个AJAX请求都必须以
session\u start()

开始,因此从我链接到的原始问题开始,它是作为$\u session['my\u object']=serialize($my\u object)完成的@MattP:您不需要使用serialize,请参见我的答案中的一个示例。使用serialize将缩小您在会话中遇到的对象的大小。因此,从我链接到的原始问题来看,这是作为$\u会话['my\u object']=serialize($my\u object)完成的@MattP:您不需要使用serialize,请参见我的答案中的一个示例。使用serialize将缩小您插入会话的对象的大小。我从未说过您必须显式序列化它,但当您将它插入会话时,这就是发生的情况。如果您有一个PDO连接作为类成员,那么尝试隐式序列化它(即$_SESSION['x']=$ojb)将不起作用。您必须使连接无效,或者重写_sleep()。我从来没有说过您必须显式地序列化它,但是当您将它插入会话时,就会发生这种情况。如果您有一个PDO连接作为类成员,那么尝试隐式序列化它(即$_SESSION['x']=$ojb)将不起作用。您必须取消连接,或覆盖睡眠()。