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