Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/376.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
Javascript 对象序列化问题_Javascript_Php_Jquery_Ajax - Fatal编程技术网

Javascript 对象序列化问题

Javascript 对象序列化问题,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我向您展示以下简化代码,试图解释我的问题: index.php $(文档).ready(函数(){ $(“#btn”)。单击(函数(){ $.ajax({ url:'ajax.php', 数据类型:“html”, 成功:函数(数据){ $('#result').html(数据); } }); }); }); ajax.php class.php: A类 { 公共启动程序; public$strCreated=false; 公帑$str; 公共函数构造() { $this->sta

我向您展示以下简化代码,试图解释我的问题:

index.php




$(文档).ready(函数(){ $(“#btn”)。单击(函数(){ $.ajax({ url:'ajax.php', 数据类型:“html”, 成功:函数(数据){ $('#result').html(数据); } }); }); });
ajax.php


class.php:

A类
{ 
公共启动程序;
public$strCreated=false;
公帑$str;
公共函数构造()
{  
$this->startProcess=time();
}
公共功能setstr($currStr)
{    
如果(!$this->strCreated)$this->strCreated=true;
$this->str='在'$this->startProcess.''启动进程:'.$currStr;
}
公共函数managestr()
{
如果($this->strCreated)返回$this->str;
$currStr='hereat'.time();
如果(!$this->strCreated)$this->setstr($currStr);
返回$this->str;
}
} 
index.php
页面中,我序列化了类的实例,并将其存储在
SESSION
变量中,以便在每次ajax调用中重用相同的实例

当我单击“填充div”按钮时,我希望看到如下结果:

第一次点击:
启动流程1577113743:此处为1577113743

第二次点击:
启动流程1577113743:此处为1577113743

i、 e.第一次单击后会得到相同的结果,因为我总是将值存储在
$this->str
中,事实上,如果创建了该值,我应该会得到存储的值

实际上,当我再次或多次单击时,我看到:

启动流程1577113743:此处为1577113744
启动流程1577113743:此处为1577113745,以此类推

我不明白为什么第一次单击时丢失了存储的值。

序列化对象时,PHP只存储对象的当前状态,即其属性值。它不会序列化其方法

好的,我明白了,谢谢。会有不同的方法来达到预期的效果吗?在ajax调用中使用同一个类实例,以及我的示例。也许您只能将值存储在
$\u会话中
?是的,我考虑过,但我正在寻找一种不加载$\u会话的替代解决方案。我会重新考虑这个想法,谢谢。