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

当我在Ci中运行上述代码时,CodeIgniter将'幻灯片放映'视图搁置到文档的开头。我需要它仅在点击“幻灯片”的ID时显示。这段代码通常有效,但是idk为什么现在变得很有趣。有任何想法吗?jQuery未正确加载CodeIgniter视图

+1

到底什么你在干什么? “幻灯片”视图中有什么? – 2012-01-05 19:19:14

+0

.load()的第一个参数应该是一个URL,而不是HTML或您在视图中所拥有的任何参数。 – Tim 2012-01-05 19:23:22

回答

3

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

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

这将抛出一个错误,因为.load需要一个URL,而不是HTML(除非你绑定到onload事件,其中1 PARAM可以是数据的一个数组,但我不认为这是你在做什么)。

我想你想让jQuery将视图文件的内容加载到#content。要做到这一点,你需要一个输出视图的控制器。例如:

控制器

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

jQuery的

$("#slideshow").click(function() { 
    $("#content").fadeOut(function() { 
     $(this).load('/path/to/controller/slideshow', function() { 
     $(this).fadeIn() 
     }); 
    }); 
}); 
+0

我用它的基本URL来使用它。谢啦! – 2012-01-05 21:17:48

+0

@MichaelGrigsby:没有概率,很高兴我可以帮助:-) – 2012-01-05 21:20:57

1

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

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

因为字符串需要正确的编码,例如作为一个JavaScript字符串与json_encode­Docs

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

检查CI docs how you get the view returned as string,而不是输出。我把这留作练习。

+0

将HTML数据传递给'.load'会抛出一个错误。 – 2012-01-05 19:26:19

+0

@火箭:错误?不知道,但我修复了网址。可能这需要第二个'json_encode'? – hakre 2012-01-05 19:40:57

+0

'$(this).load('

',function(){});'说'语法错误,无法识别的表达式:>'。 – 2012-01-05 19:43:11

0

尝试做到这一点:

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

请注意,我用单引号,和第三个参数真。

+0

将HTML数据传递给'.load'会抛出一个错误。 – 2012-01-05 19:26:52