<script src="<?php echo site_url('bootstrapper/jqTimer'); ?>"></script>
所以我试图用上面的脚本调用下面的控制器,但是我没有找到错误。任何想法,为什么这种方法不工作?在视图中调用视图无法正常工作
function jqTimer() {
$this->load->view("jquery.timers.js");
}
<script src="<?php echo site_url('bootstrapper/jqTimer'); ?>"></script>
所以我试图用上面的脚本调用下面的控制器,但是我没有找到错误。任何想法,为什么这种方法不工作?在视图中调用视图无法正常工作
function jqTimer() {
$this->load->view("jquery.timers.js");
}
当与<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
作为第三个参数返回文件的内容,这样你就可以回声出来)
好吧,我不知道我可以使用$ this-> load-> view加载另一个视图。谢啦!确实帮助很大! – 2012-01-04 17:26:40
FWIW,我永远不会加载像这样的嵌入式JavaScript插件(除非是几行代码)。外部文件的主要优点之一是浏览器端缓存。通过这样做,客户端将不得不从每个**请求的插件中下载额外的代码。 – swatkins 2012-01-04 21:29:59
我看不出有任何理由,你为什么要在控制器中创建一个函数只是加载JavaScript文件。 base_url()
功能已经可以做你想做的了。
<script src="<?php echo base_url('path/to/jquery.timer.js'); ?>"></script>
看一看文档为URL helper
您正在寻找呼应了链接到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类(相反编辑到每个视图文件)。
不过,有点奇怪的做事方式......
是'jquery.timers.js'在views目录下吗? – 2012-01-02 23:03:26
是的...我也试过它作为一个子目录,但我通常也会遇到错误。 – 2012-01-02 23:20:29
'jqTimer'是你视图中的一种方法还是一个函数? – 2012-01-02 23:23:14