2

私はcodeigniter2を使用しており、テーマフォルダーはjsimgcssフォルダーで構成されています。

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を使用する正しい方法ではありませんか?

4

3 に答える 3

3

スクリプトを取得するには、コントローラーを作成する必要があります。かもしれません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>
于 2012-04-11T17:17:05.877 に答える
2

動的なファイルを生成するjs場合css。標準のMVCメソッドを使用します。viewjsまたはcssという名前のフォルダーにフォルダーを作成します。jsまたはcssファイルをphpビューファイルとして作成します。例:slider.js.php

コントローラを作成しthemejs.phpます。ルーティングを使用して、必要なすべてのjsまたはcssファイルをこのコントローラーに転送します。そして、このコントローラー内で動的アクションを実行し、変数をjs、cssビューファイルに渡します。そしてそれらをヘッダー付きで印刷します

于 2012-04-11T15:15:07.843 に答える
0

base_url()CIURLヘルパーの機能部分です。そのファイルでそれを利用したいが、$ CIオブジェクトのインスタンスを作成したくない場合は、その関数の独自のバージョンを実装する必要があります。

于 2012-04-11T18:40:33.200 に答える