jQuery没有正确加载CodeIgniter视图

时间:2012-01-05 18:39:22

标签: php jquery codeigniter

$("#slideshow").click(function() {
    $("#content").fadeOut(function() {
        $(this).load('<?php $this->load->view("slideshow"); ?>', function() {
            $(this).fadeIn()
        });
    });
});

当我在Ci中运行上面的代码时,CodeIgniter将“幻灯片放映”视图挂起到文档的开头。我只需要在点击“幻灯片”的ID时显示它。这个代码片段通常有效,但是为什么它现在表现得很好笑。有什么想法吗?

3 个答案:

答案 0 :(得分:3)

我不确定你在这里要做什么。 CodeIgniter中的视图文件应该包含HTML。控制器可以加载视图,并在需要时传递数据。视图是模板。

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

这会抛出一个错误,因为.load需要一个URL,而不是HTML(除非你绑定到onload事件,其中第一个参数可以是一个数据数组,但我不知道不要以为这就是你正在做的事情。

我想你想要的是让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 :(得分:1)

这会产生这样的垃圾,浏览器会把它放在某个地方(在文档的开头):

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

因为字符串需要适当的编码,例如作为带有json_encode­Docs的javascript字符串:

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

检查CI docs how you get the view returned as string而不是输出。我将此作为练习。

答案 2 :(得分:0)

尝试这样做:

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

请注意,我使用单引号,第三个参数为true。