将codeigniter环境加载到javascript文件中


Load codeigniter environment to a javascript file

我在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 require( '../wordpress/wp-load.php' ); 的方式加载codeigniter环境

有没有一种方法可以用类似的方式加载codeigniter,这样我的javascript和css文件就可以使用codeigniter函数?。

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(); ?>"
});