0

HMVC アプローチで CodeIgniter を使用する PHP のプロジェクトがあります。

今、私は次に何をすべきか本当に混乱している問題に遭遇しました。これが私の状況です:

次のようなビューがあります。

//logs_v_month.php

<div id="logs" class="tab-pane active">

</div>

<script type="text/javascript">
$(function(){       
    $.ajax({
      url: "<?php echo load_global_assets('system/js/log.js')?>",
      dataType: "script",
      success: function(e){}
    });
});

</script>

それから私はコントローラーを持っています:

//view.php
function display_logs_month(){
    $data['logs_v'] = $this->load->view('logs_v_month');                        

echo json_encode($data);
}

次に、メイン ビューである別のビューがあります。

//logs.php
<div class="tab-content" id="logs_content">
    <!--logs loaded via ajax call-->
</div>
<script type="text/javascript">
function view_month(group_id, start_end){
$.ajax({
    type : "POST",
    dataType: "json",
    url : "<?=base_url()?>logs/view/display_logs_month",                        
    data : {"group_id" : group_id},
    success : function (data){  
        $("div#logs").remove();                     
        $("#logs_content").append(data.logs_v);//logs_v             
    },
    error : function(data){
    console.log(data);
    }
    });
}

logs.php ビューには、view.php コントローラーを介して logs_v_month.php ビューをロードするための ajax 呼び出しがあります。

私の質問は、logs.php ビューの logs_v_month.php から JavaScript 関数 (これも ajax 経由で読み込まれる) にアクセスするにはどうすればよいですか?

私はウェブで答えを探してみましたが、人々が与えるほとんどの答えは eval() 関数を使用していますが、多くの人がそれを使用することを思いとどまらせています。

このような状況で JavaScript に簡単にアクセスできるように、JavaScript を再構築または再配置する方法はありますか? これが問題を解決できる場合は、名前空間も考慮しています。

CIとHMVCの学習を始めたばかりなので、これにはかなり慣れていません。

ありがとう!

4

1 に答える 1

2

返されたスクリプトをページのDOMに配置する必要があります。

ajax呼び出しのsuccessメソッドでスクリプトデータを取得すると、その中にコードを含むスクリプト要素を作成し、次のようにDOMに追加できます。

success:function(data){
    var scriptElement = document.createElement('script');
    scriptElement.setAttribute('type', 'text/javascript');
    scriptElement.textContent = data;
    var head = document.getElementsByTagName('head').item(0);
    head.appendChild(scriptElement);
}

これで、すべてのスクリプトから関数にアクセスできるようになります。

于 2013-02-12T02:11:20.230 に答える