jQuery неправильно загружает представление CodeIgniter - PullRequest
0 голосов
/ 05 января 2012
$("#slideshow").click(function() {
    $("#content").fadeOut(function() {
        $(this).load('<?php $this->load->view("slideshow"); ?>', function() {
            $(this).fadeIn()
        });
    });
});

Когда я запускаю приведенный выше код в Ci, CodeIgniter ожидает представление «слайд-шоу» в начале документа.Мне нужно, чтобы он отображался только при нажатии на идентификатор «слайд-шоу».Этот фрагмент кода обычно работает, но не знаю, почему он сейчас забавен.Есть идеи?

Ответы [ 3 ]

3 голосов
/ 05 января 2012

Я не уверен, что вы пытаетесь сделать здесь. Просмотр файлов в CodeIgniter должен содержать HTML. Контроллеры могут загружать представления и передавать им данные, если это необходимо. Представления - это шаблоны.

$(this).load('<div id="test"></div>', function(){});

Это приведет к ошибке, поскольку .load ожидает URL, а не HTML (если вы не привязаны к событию onload, где 1-й параметр может быть массивом данных, но я не думаю, что что ты делаешь).

Я предполагаю, что вы хотите, чтобы jQuery загружал содержимое файла представления в #content. Для этого вам понадобится контроллер, который выводит представление. Например:

Контроллер

function slideshow(){
    $this->load->view('slideshow');
}

JQuery

$("#slideshow").click(function() {
   $("#content").fadeOut(function() {
      $(this).load('/path/to/controller/slideshow', function() {
         $(this).fadeIn()
      });
   });
});
1 голос
/ 05 января 2012

Это создает такой мусор, что ваш браузер поместит его куда-нибудь (в начале документа):

$(this).load('<?php $this->load->view("slideshow"); ?>', function() {

Поскольку строка требует правильного кодирования, например, в виде строки JavaScript с json_encode & shy; Документы :

$(this).html(<?php echo json_encode($view_html); ?>);
$(this).fadeIn(); 

Проверьте документы CI, как получить представление, возвращаемое в виде строки вместо вывода. Я оставляю это как упражнение.

0 голосов
/ 05 января 2012

попробуйте сделать это:

$(this).load("<?php $this->load->view('slideshow','','true'); ?>", function() { ......  }

Обратите внимание, что я использую одинарные кавычки, а третий параметр true.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...