0

我正在使用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 变量。

在性能和维护方面实现这一目标的最佳方法是什么?

我不想遵循的其他一些方法:

  1. 将 JS 文件另存为 PHP 文件,然后将值传递给该文件
  2. 在全局视图文件中声明所有这些变量
4

3 回答 3

1

您可以将值作为参数传递给您的 js 函数,例如 post.js

function get_random( param ) {
    //use param here
}
//OR
function get_random( ) {
    //get arguments like
   var firstArg = arguments[0]; 
}

视图.php

//include post.js file
//call the js function passing php variable as parameter, like
get_random("<?php echo $random_key; ?>");

你的意思是这样的吗

于 2013-01-31T05:11:03.097 回答
1

一种使用隐藏字段的方法,在您的情况下将它们存储在隐藏字段中,例如:

<input type="hidden" value="<?php echo $random_key;?>" id="randomkey">

并在 js 中使用 ID 访问它们,例如:

$("#randomkey").val();

通过这种方式,您可以在您的 js 中使用控制器参数。

帮助它会帮助你!

于 2013-01-31T05:17:30.767 回答
-1

最简单的方法是,在视图文件中将 php 变量定义为 js 变量

<script type="text/javascript">
    var random_key = <?= $random_key; ?>;
</script>

然后您可以在example.js文件中使用该变量

于 2013-01-31T07:15:34.160 回答