2012-01-02 95 views
0
<script src="<?php echo site_url('bootstrapper/jqTimer'); ?>"></script> 

所以我试图用上面的脚本调用下面的控制器,但是我没有找到错误。任何想法,为什么这种方法不工作?在视图中调用视图无法正常工作

function jqTimer() { 
    $this->load->view("jquery.timers.js"); 
} 
+0

是'jquery.timers.js'在views目录下吗? – 2012-01-02 23:03:26

+0

是的...我也试过它作为一个子目录,但我通常也会遇到错误。 – 2012-01-02 23:20:29

+0

'jqTimer'是你视图中的一种方法还是一个函数? – 2012-01-02 23:23:14

回答

2

当与<script>标记加载JavaScript时,src属性期待一个文件名到一个js文件。你在CI安装中给它一个控制器方法的路径。

你需要做的就是把jquery.timers.js文件中的文件夹public_html,并从那里访问它什么:

// assuming you have the script in a [javascripts] folder inside [public_html] 
<script src="<?php echo site_url('javascripts/jquery.timers.js'); ?>"></script> 

如果您愿意来加载通过视图您的JavaScript,那么你需要做的这个代替:

<script><?php echo $this->load->view("jquery.timers.js", "", TRUE); ?></script> 

这将回声出<script>标签嵌入的JavaScript之间的视图文件的内容。 (传递TRUE作为第三个参数返回文件的内容,这样你就可以回声出来

+0

好吧,我不知道我可以使用$ this-> load-> view加载另一个视图。谢啦!确实帮助很大! – 2012-01-04 17:26:40

+1

FWIW,我永远不会加载像这样的嵌入式JavaScript插件(除非是几行代码)。外部文件的主要优点之一是浏览器端缓存。通过这样做,客户端将不得不从每个**请求的插件中下载额外的代码。 – swatkins 2012-01-04 21:29:59

0

我看不出有任何理由,你为什么要在控制器中创建一个函数只是加载JavaScript文件。 base_url()功能已经可以做你想做的了。

<script src="<?php echo base_url('path/to/jquery.timer.js'); ?>"></script> 

看一看文档为URL helper

0

您正在寻找呼应了链接到JS,没有回声出JS本身。 您可以创建在一个延伸是CI_Controller核心文件夹MY_Controller,其中:

function jqTimer() { 
    return site_url("jquery.timers.js"); 
} 

然后,在任何其他控制器(延伸MY_controller)你会去:

$data['js_timer'] = $this->jqTimer(); 
/* proceed to load main view with $data */ 

查看:

<script src="<?php echo $js_timer; ?>"></script> 

这是干的,如果你决定使用不同的js定时器插件,你只需要在一个地方替换它:MY_Controller类(相反编辑到每个视图文件)。

不过,有点奇怪的做事方式......