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

post.js などの 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; ?>");

このようなことを意味しましたか

于 2013-01-31T05:11:03.097 に答える
1

隠しフィールドを使用してそれを行う1つの方法は、あなたの場合、次のような隠しフィールドに保存します。

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

次のようなIDを使用して、jsでそれらにアクセスします。

$("#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 に答える