$("#slideshow").click(function() {
$("#content").fadeOut(function() {
$(this).load('<?php $this->load->view("slideshow"); ?>', function() {
$(this).fadeIn()
});
});
});
当我在Ci中运行上面的代码时,CodeIgniter将“幻灯片放映”视图挂起到文档的开头。我只需要在点击“幻灯片”的ID时显示它。这个代码片段通常有效,但是为什么它现在表现得很好笑。有什么想法吗?
答案 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。