在视图中调用视图不能正常工作

时间:2012-01-02 22:54:53

标签: php javascript codeigniter

<script src="<?php echo site_url('bootstrapper/jqTimer'); ?>"></script>

所以我尝试使用上面的脚本调用下面的控制器,但是我找不到错误。关于为什么这种方法不起作用的任何想法?

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

3 个答案:

答案 0 :(得分: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>

这将回显嵌入式javascript的<script>标签之间的视图文件的内容。 (传递TRUE作为第三个参数返回文件的内容,因此您可以将其回显

答案 1 :(得分:0)

我没有看到为什么你应该在控制器中创建一个只是为了加载一个javascript文件的原因。 base_url()功能已经可以做你想要的了。

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

查看URL helper

的文档

答案 2 :(得分: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类(与每个视图文件相对)。

仍然是一种奇怪的做事方式......