在笨使用具有PHP扩展外部JS [关闭](Using external js with .php e

2019-07-28 22:32发布

我使用笨2,我有我的主题文件夹由JS,IMG,CSS文件夹。

JS文件夹里,文件名是js_functions.php包含:

<?php header("Content-type: text/javascript"); ?>
/**
 * GLOBAL VARIABLES & PATHS
 *
 * path definitions for jquery inline usage
 *
 */     
var base_url         = '<?=base_url();?>';
// ------------------------------------------------------------------------

/**
 * jquery.message Global Implementation
 *
 * Shows message if any session flashdata named message is set
 *
 */

<?php if($this->session->flashdata('message')):?>
$(function() { $().message("<?=$this->session->flashdata('message');?>"); });
<?php endif; ?>

// ------------------------------------------------------------------------

并调用它的视图文件

<script type="text/javascript" src="<?=base_url();?>themes/admin/js/js_functions.php"></script>

正确呈现。 但它返回的检查屏幕上的镀铬:

var base_url         = '<br />
Uncaught SyntaxError: Unexpected token ILLEGAL

并在浏览器中,当你调用从地址栏的页面:

var base_url         = '<br />
<b>Fatal error</b>:  Call to undefined function base_url() in <b>F:\xampp\htdocs\themes\js\js_functions.php</b> on line <b>11</b><br />

怎么了? 是不是在外部JS / PHP文件使用PHP的正确方法是什么?

Answer 1:

你需要做一个控制器,拿到剧本。 可能是js 。 内部控制器设置内容类型头,并载入包含以上的JavaScript的看法。 比方说你有一个控制器称为js

class Js extends CI_Controller{
  public function js_functions(){
    $this->output->set_header('Content-type: text/javascript');
    $data = array( 'messages' => $this->session->flashdata('message'));
    $this->load->view('jsfunc',$data);
  }
}

你可以在这样的主视图加载脚本

<script src="<?php echo base_url('js/js_functions'); ?>"></script>


Answer 2:

如果你想生成动态jscss文件。 使用非标准MVC方法。 使文件夹view文件夹名JS和CSS。 创建JS和CSS文件作为PHP视图文件。 例如: slider.js.php

做一个控制器themejs.php 。 正向你所需要的,通过使用路由所有的JS和CSS文件到该控制器。 而这个控制器内进行动态的动作,通过可变因素给JS,CSS查看文件。 并与头打印出来



Answer 3:

base_url()是CI网址助手的功能部分。 如果你想在该文件中使用它,你不希望创建$ CI对象的实例,你将不得不实现自己该功能的版本。



文章来源: Using external js with .php extension in Codeigniter [closed]