Переменные автозагрузки CodeIgniter теряются после вызова AJAX
Я создавал приложение, которому требуются кнопки для вызова ajax контроллера, использующего модели с автозагрузкой. У меня сложилось впечатление, что переменные в автозагрузочной модели сохранят свои значения после вызова Ajax, но по какой-то причине вся модель (включая их переменные) потеряла свои новые значения.
Я неправильно понимаю, как работает функция автозагрузки, или это как-то связано со мной при использовании 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".
Спасибо за ваше время, я надеюсь, что кто-то может мне помочь.
2 ответа
Я неправильно понимаю, как работает функция автозагрузки?
Ну... да.
Автозагрузка означает, что объект загружается (создается) автоматически при запуске приложения. Поэтому нам не нужно загружать их пару раз, если это необходимо.
Примечание: только необходимые / необходимые модели должны загружаться автоматически.
Или это как-то связано со мной, используя Ajax
В этом случае запрос XHR действует как обычный запрос HTTP. Когда вы отправляете запрос Controller/method
все приложение запускается и останавливается после обработки результата.
Таким образом, модель потеряет все значения, хранящиеся в ее свойствах.
Ищете решение?
Я не уверен в этом, но вы можете хранить переменные в сеансе (с помощью $this->session->set_userdata()
в CI) и получить сохраненные значения позже.
Каждый ajax-запрос - это новая загрузка страницы, поэтому, когда вы вызываете ее первым, вы загружаете модель и задаете переменную, но когда вы вызываете второй запрос, вы загружаете новый экземпляр модели с новыми значениями для ваших переменных. Я думаю, что лучший способ справиться с этим - использовать сессии или печенье...