Codeigniter:如何包含javascript文件

Raj*_*Raj 18 javascript codeigniter include

您好我刚开始使用CodeIgniter框架.我目前的目录结构是

Demo(Project name)
 +System
 +Application
   -Controllers
      demo.php
   +Model
   -Views
      view_demo.php
 -Js
    ajax.js
    jquery.js  
Run Code Online (Sandbox Code Playgroud)

请告诉我如何在view_demo.php中包含.js文件.

谢谢Raj

ipa*_*aus 27

您需要使用base_url()在您的VIEW中包含javascript文件.

所以,在view_demo.php文件中:

<script type="text/javascript" src="<?=base_url()?>js/jquery.js" ></script>
<script type="text/javascript" src="<?=base_url()?>js/ajax.js" ></script>
Run Code Online (Sandbox Code Playgroud)

您将需要加载URL帮助程序.要加载你需要放在demo.php控制器上的助手:

$this->load->helper('url');
Run Code Online (Sandbox Code Playgroud)

您还可以在helpers数组上的\ config\autoload.php上自动加载.

有关base_url()的更多信息:http://www.codeigniter.com/user_guide/helpers/url_helper.html#base_url

  • 嘿! 有点晚了但是... site_url("path/to/your/asset")将返回你的基本网址,然后是你指定的路径.我认为这比使用base_url()手动连接更干净,但两者都完成了工作. (2认同)

RC.*_*RC. 22

您不会在PHP中包含JS文件,它们将作为您生成的HTML中的脚本标记输出,您可能将其作为PHP脚本的输出生成.

据我所知,没有内置CodeIginiter函数来包含此输出,就像使用link_tag()CI提供的功能的CSS一样.我已经从CI 添加了一个调用script_tag()system/helpers/html_helper.php文件的函数.功能是:

if ( ! function_exists('script_tag')) {
    function script_tag($src = '', $language = 'javascript', $type = 'text/javascript', $index_page = FALSE)
    {
        $CI =& get_instance();
        $script = '<scr'.'ipt';
        if (is_array($src)) {
            foreach ($src as $k=>$v) {
                if ($k == 'src' AND strpos($v, '://') === FALSE) {
                    if ($index_page === TRUE) {
                        $script .= ' src="'.$CI->config->site_url($v).'"';
                    }
                    else {
                        $script .= ' src="'.$CI->config->slash_item('base_url').$v.'"';
                    }
                }
                else {
                    $script .= "$k=\"$v\"";
                }
            }

            $script .= "></scr"."ipt>\n";
        }
        else {
            if ( strpos($src, '://') !== FALSE) {
                $script .= ' src="'.$src.'" ';
            }
            elseif ($index_page === TRUE) {
                $script .= ' src="'.$CI->config->site_url($src).'" ';
            }
            else {
                $script .= ' src="'.$CI->config->slash_item('base_url').$src.'" ';
            }

            $script .= 'language="'.$language.'" type="'.$type.'"';
            $script .= ' /></scr'.'ipt>'."\n";
        }
        return $script;
    }
}
Run Code Online (Sandbox Code Playgroud)

然后在您的PHP代码中,您可以:

echo script_tag('content/js/jquery-1.4.2.js');
Run Code Online (Sandbox Code Playgroud)


kev*_*out 9

我将我的javascript存储在我的视图文件夹的子目录中,因此文件路径相对于被调用的视图,我省略了base_url().

我采用的另一种技术是定义要包含在我的控制器中的脚本数组,然后在我的视图中循环遍历数组以包含它们.这允许我仅在需要时包含专业js功能.

$data['scripts to load'] = array('edit.js','menu.js', 'contact.js');
$this->load->view('myview');
Run Code Online (Sandbox Code Playgroud)

然后在视图中

 <?php  foreach($scripts_to_load as $script):?>
           <script type='text/javascript' src = 'my_js/<?php echo $script;?>'>
 <?php endforeach;?>
Run Code Online (Sandbox Code Playgroud)

如果您在每个页面上都加载了脚本文件,则可以在页脚视图中对其进行硬编码,如其他答案中所述.