Javascript 对象序列化问题
我向您展示以下简化代码,试图解释我的问题: index.phpJavascript 对象序列化问题,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
$(文档).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会话的替代解决方案。我会重新考虑这个想法,谢谢。