0

我在我的 javascript 文件中使用 php,我的 .htaccess 看起来像

<FilesMatch "\.css$">
  SetHandler application/x-httpd-php
  Header set Content-type "text/css"
</FilesMatch>

<FilesMatch "\.js$">
  SetHandler application/x-httpd-php
  Header set Content-type "application/javascript"
</FilesMatch>

我现在可以在我的 javascript 文件中使用 php,但 codeigniter 函数不起作用。例如

$('#example').dataTable( {
        "bProcessing": true,
        "sAjaxSource": "<?php $CI = get_instance(); echo base_url(); ?>"
    } );

给出错误

<b>Fatal error</b>:  Call to undefined function get_instance() in <b>C:\xampp\htdocs\_init\assets\js\custom.js</b> on line <b>88</b><br />

我想也许我需要以类似于 wordpress 的方式加载 codeigniter 环境require( '../wordpress/wp-load.php' );

有没有办法我可以以类似的方式加载 codeigniter,以便我的 javascript 和 css 文件可以使用 codeigniter 函数?

4

1 回答 1

3

CI 依赖于引导程序 system/core/CodeIgniter.php来启动应用程序。

没有可以包含的魔术文件可以让您访问这些功能..

解决方案 1:您的问题的最佳解决方案base_url是添加一个基本标签,如 Phil Sturgeon 所述。

<base href="<?php echo base_url(); ?>">

解决方案2:在视图中定义一个js base_url

<script>
   var base_url = "<?php echo base_url(); ?>";
</script>

在您的 js 中,您可以像访问它一样访问它。

$('#example').dataTable( {
    "bProcessing": true,
    "sAjaxSource": base_url
});

你要什么:

如果您在 js 和 css 中依赖 CI 功能,那么您应该重新审视您的方法,但是,这是一个可能的解决方案。

创建控制器application/controllers/js.php

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class js extends CI_Controller {
    public function index()
    {
        $this->load->view('js');
    }
}

创建视图application/views/js.php

$('#example').dataTable( {
    "bProcessing": true,
    "sAjaxSource": "<?php echo base_url(); ?>"
});
于 2013-08-06T17:15:43.323 回答