Переменные автозагрузки 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-запрос - это новая загрузка страницы, поэтому, когда вы вызываете ее первым, вы загружаете модель и задаете переменную, но когда вы вызываете второй запрос, вы загружаете новый экземпляр модели с новыми значениями для ваших переменных. Я думаю, что лучший способ справиться с этим - использовать сессии или печенье...

Другие вопросы по тегам