我正在使用Codeigniter
并希望将JavaScript与视图文件分开,但许多JavaScript函数需要来自控制器的数据(它依赖于来自控制器的值)
前:
controller :
function show_post() {
$data['data'] = $this -> get_data(); //some data
$data['random_key'] = $this -> generate_random(); //returns a random value
$this -> load -> view('posts', $data);
}
并且在视图中我有一个js函数:
<script>
function get_random() {
return "<?= $random_key; ?>";
}
</script>
如何将此javascript片段保存到其他文件posts.js
?如果我做了类似的事情,那么我就不能在脚本中使用php变量了。
在性能和维护方面实现这一目标的最佳方法是什么?
其他一些我不想遵循的方式:
答案 0 :(得分:1)
你可以将值作为参数传递给你的js函数,比如 post.js
function get_random( param ) {
//use param here
}
//OR
function get_random( ) {
//get arguments like
var firstArg = arguments[0];
}
view.php
//include post.js file
//call the js function passing php variable as parameter, like
get_random("<?php echo $random_key; ?>");
你的意思是这样吗
答案 1 :(得分:1)
通过使用隐藏字段来实现它的一种方法,在您的情况下将它们存储在隐藏字段中,如:
<input type="hidden" value="<?php echo $random_key;?>" id="randomkey">
并使用以下ID访问js:
$("#randomkey").val();
通过这种方式,您可以在js中使用控制器参数。
帮助它会帮助你!
答案 2 :(得分:-1)
最简单的方法是,在视图文件中将php变量定义为js变量
<script type="text/javascript">
var random_key = <?= $random_key; ?>;
</script>
然后您可以在example.js
文件中使用该变量