Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从视图中分离Javascript文件_Php_Javascript_Codeigniter - Fatal编程技术网

Php 从视图中分离Javascript文件

Php 从视图中分离Javascript文件,php,javascript,codeigniter,Php,Javascript,Codeigniter,我正在使用Codeigniter并希望将JavaScript与视图文件分开,但许多JavaScript函数需要来自控制器的数据(这取决于控制器的值) 例: 在视图中,我有一个js函数: <script> function get_random() { return "<?= $random_key; ?>"; } </script> 函数get_random(){ 返回“”; } 如何将此javascript片段保存到其他

我正在使用
Codeigniter
并希望将JavaScript与视图文件分开,但许多JavaScript函数需要来自控制器的数据(这取决于控制器的值)

例:

在视图中,我有一个js函数:

<script>
    function get_random() {
        return "<?= $random_key; ?>";
    }
</script>

函数get_random(){
返回“”;
}
如何将此javascript片段保存到其他文件中,例如
posts.js
?如果我这样做了,那么我就不能在脚本中使用php变量

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

我不想遵循的其他方法:

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

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

    view.php

    //include post.js file
    //call the js function passing php variable as parameter, like
    get_random("<?php echo $random_key; ?>");
    
    //包含post.js文件
    //调用将php变量作为参数传递的js函数,如
    获取随机数(“”);
    

    您的意思是这样的吗?

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

    <input type="hidden" value="<?php echo $random_key;?>" id="randomkey">
    
    通过这种方式,您可以在js中使用控制器参数


    帮助它会帮助你的

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

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

    然后你可以在你的
    example.js
    文件中使用该变量,如果我将我的js集成到另一个文件中,那么出于某些原因,我不能这样调用。如果我在某些事件中需要数据,会发生什么?问题只是一个例子,我不能在大型方法中使用此方法。我如何存储这样的数组?@red如果您不想在DOM中隐藏数据以供以后操作,听起来AJAX是您唯一的选择。@sandip它将进行另一次调用,这比将变量传递到php文件更糟糕(实际上,我也需要视图文件中的所有这些数据,我不想为JS创建另一个调用)如果它不是敏感数据,我只会将变量作为数据id=“id”输出到DOM属性设置为对应的html元素,然后使用javascript与之交互。如果没有对应的元素,则将其放入隐藏的输入框中。更干净。我对将变量更改为html元素不感兴趣,这会使DOM变脏。我个人发现您目前将php注入javascri的方法pt比我的备选方案、备选方案或简单的AJAX调用要脏得多。这听起来像是你在寻找一个除了一起改变框架/编程语言之外不存在的解决方案。@Jeemusu谢谢你的最后一句话,实际上这个想法是要扩展一个框架,所以我不能说用户将如何编程和使用它我需要提供更好的方法。您的方法将在某些区域(例如绑定selectBox)工作,并且不会对分组项(转换为Javascript对象的PHP对象)工作,最好的方法是使用js对象,而不是转换为html元素。
    <input type="hidden" value="<?php echo $random_key;?>" id="randomkey">
    
    $("#randomkey").val();
    
    <script type="text/javascript">
        var random_key = <?= $random_key; ?>;
    </script>