在AJAX调用之后,CodeIgniter自动加载模型的变量会丢失

我一直在创建一个应用程序,它需要按钮对使用自动加载模型的控制器进行ajax调用。 我的印象是自动加载模型中的变量会在Ajax调用后保留其值,但由于某种原因,整个模型(包括它们的变量)都丢失了新值。

我是否误解了自动加载function的工作方式,或者它与我使用Ajax有什么关系?

代码供以下参考。

自动加载:

$autoload['model'] = array('choice_model'); 

Ajax在JQuery中调用:

 $( document ).ready(function() { var encounter = 1; $.ajax({ type: "POST", url: baseURL+"Encounter/startEncounter", dataType: "json", data: "encounter_id=" + encounter, success: function(data) { $("#message-box").html(data); SetChoices(); } }); }); function SetChoices() { $.ajax({ type: "POST", url: baseURL+"Choice/getChoices", dataType: "json", data: "", success: function(data){ alert (data); } }); } 

第一个ajax调用将Choice_model中的以下变量设置为“TestTrue”:

 public $test = 'TestFalse'; 

第二个ajax调用返回前一个变量,但它的值现在再次变为“TestFalse”。

谢谢你的时间,我希望有人可以帮助我。

我误解了自动加载function的工作方式吗?

……是的。

自动加载意味着在应用程序启动时自动加载(实例化)对象。 因此,如果需要,我们不需要加载它们几次。

注意:只应自动加载必要/必要的模型。

或者它与我使用Ajax有关

在这种情况下,XHR请求充当普通的HTTP请求。 当您向Controller/method发送请求时,整个应用程序在提供结果后运行并停止。

因此模型将丢失其属性中存储的所有值。

寻找解决方案?

我不确定这一点,但您可以将变量存储在Session中(通过在CI中使用$this->session->set_userdata() )并稍后检索存储的值。

每个ajax请求都是一个新的页面加载,因此,当您首先调用它时,您加载模型并设置变量,但是当您调用第二个请求时,您将加载模型的新实例,并为您的变量添加新值。我认为管理这个的最好方法是使用SESSIONS或COOKIES ……