Как отразить страницу (представление) в функции Ajax в Codeigniter

Я использую Codeigniter с фреймворком Zurb Foundation. Я пытаюсь загрузить данные в раскрывающемся окне (причудливое всплывающее окно) с помощью AJAX. Хитрость в том, что я загружаю не только внутренний HTML-контент, но и сам HTML. Я имею в виду, я хочу, чтобы функция в контроллере возвращала php файл в функцию вызова ajax, содержимое которой будет отображаться во всплывающем окне. Мой код

Ajax-вызов функции

function ajaxfunct() {
            $.ajax({
                type: "POST",
                url: "welcome/test",
                data: { name: "Jigar", location: "jain" }
            }).done(function( html ) {
                $("#tagUser").append(html);


            });
        }

Мой код контроллера

public function test() {
    $data['name'] = $_POST['name'];
    $data['location'] = $_POST['location'];
    $this->load->view('index', $data);
    echo 'WHAT SHUD I ECHO HERE ?'
}

Я знаю, что последние 2 строки кода моего контроллера неверны. Я просто не знаю, как получить php-файл из папки представлений, обработать его и передать в ajax в виде предварительно обработанного html (строка).

Я не ищу весь код ... просто ссылка на какую-то функцию или онлайн-учебники будет отличной ... спасибо


person Jigar Jain    schedule 15.11.2012    source источник
comment
Проверьте консоль разработчика (например, FireBug, Chrome Inspector), чтобы узнать, что вы получите в ответ на запрос. Выполните отладку HTML.   -  person Geert    schedule 15.11.2012


Ответы (1)


Вы уже извлекаете файл PHP из папки представлений в своем контроллере.

Линия

$this->load->view('index', $data);

Загружает файл /application/views/index.php и обрабатывает его данными из массива $data.

Таким образом, для вашего вызова AJAX вы можете создать файл представления, отличный от index.php, например test.php, который содержит правильный HTML для AJAX и вызвать его с помощью строки

$this->load->view('test', $data);

И пропустите часть ЭХО...

person jtheman    schedule 15.11.2012
comment
но это загрузит весь файл test.php в браузере. Я хочу загрузить его только во всплывающем окне без перезагрузки текущей страницы - person Jigar Jain; 15.11.2012
comment
@Джигар. Нет, конечно, вам нужна функция контроллера только для вашего AJAX. Я думал, что это метод test()? - person jtheman; 15.11.2012
comment
@Jigar Если вы вызовете «welcome/test» из своей функции AJAX, результат будет помещен в ваш контейнер #tagUser. Если вы пишете yourdomain.com/welcome/test в своем браузере, то тот же метод будет выводиться в браузере, однако вы должны написать свой контроллер/модель AJAX, чтобы он ничего не выводил без правильных данных POST. - person jtheman; 15.11.2012
comment
спасибо, чувак.. твой код работает.. круто :) и изначально я имел в виду контроллер.. единственная ошибка, которую я сделал, это то, что я вызывал индексный файл, когда я должен был вызвать тестовый файл :) глупо с моей стороны, лол.. спасибо все равно ты :) - person Jigar Jain; 15.11.2012