我试图通过jQuery.load函数调用Codeigniter URI,而不重建类实例。
原始的URI段如下所示:/culture/edit/190
。
这个初始调用使用预先加载了ID信息的输入构建了一个表单。我存储了受保护类变量(由$this->editIds
调用)中涉及的各种表的初始行ID,以便稍后将提交的表单与原始ID进行比较,查看它们是否发生了更改。
提交表单会调用一个URI,如:/culture/do_edit
,它从可能更改的表单中接收post数据,然后准备insert语句。
我需要检查ID以确保(如果它们被更改)用户没有试图复制ID。如果ID被更改为一个唯一值(如果有的话),则该记录的ID将被更改而不会受到投诉;如果它根本没有改变,那么它可以轻松地继续下去。
问题(我认为)是类被重新构造,并且我丢失了之前变量集中的原始数据,因为do_edit
将变量视为空(初始构造函数状态)。
我试着改变ajax方法的调用方式:
$('#message').load('/culture/do_edit', data);
从而产生URI:/culture/do_edit
并重构该类。
或
$('#message').load('do_edit', data);
这导致URI /culture/edit/do_edit
,该URI实际上通过方法编辑参数do_edit
。
我想保留类实例,以便可以比较原始ID。
我可以在帖子的隐藏输入中传递原始ID,但如果可以避免的话,我宁愿不添加额外的输入。有没有一种方法可以在不遍历整个URI和重建的情况下调用方法?
或者我应该用不同的方式进行比较?
尝试将序列化的对象存储在会话中,并在再次需要时取消序列化。
http://php.net/manual/en/function.serialize.php
PHP不会在每次http请求后为您保留可用的实例。
我建议您使用隐藏字段,使事情变得更容易。在会话中存储这些序列化的对象可能很难对应用程序进行故障排除。