3

私の知る限り、ajaxは、CIプロファイラーが有効になっていると、最後にメソッドにhtmlを挿入するので嫌いです。これは、のコールバックをview()台無しにします。success:$.ajax()

私の考えは、ajax呼び出しに使用されるすべてのメソッドを定義するのではなく、$this->output->enable_profiler(false);CI_Controller ..または他の場所を拡張するフックまたはコアコントローラーで次のコードを使用できますが、どこに配置するかわからないということでした。

<?php
if( $this->input->is_ajax_request() ){
    $this->output->enable_profiler(false);
}

質問:

次のコードをどこに置くことができますか?CIがすべての領域でグローバルに有効になるajaxリクエストに対してのみ有効になっている場合、プロファイラーを無効にします。もちろん、もっと良い解決策があれば、私に知らせてください。しかし、Googleは何も明らかにしていません。

4

3 に答える 3

4

コアコントローラーを拡張し、コンストラクターでpost配列内の特別なpost変数名を確認し、プロファイラーを無効にしてください。

class MY_Controller extends CI_Controller {

    function __construct()
    {
        parent::__construct();
        if(isset($_POST['is_ajax_request'])
            $this->output->enable_profiler(false);
    }
}

ajaxリクエストを送信するときは、フィールドis_ajax_requestを送信してプロファイラーを無効にします。

于 2012-07-12T06:25:21.970 に答える
1

私はこれが答えられていることを知っていますが、MY_Controller.phpのフィールドを渡す代わりにこれを使用しました

    if($this->input->is_ajax_request()) {
        $this->output->enable_profiler(false);
    } else {
        $this->output->enable_profiler(true);
    }

Chromeでテストされ、とにかく私の開発ボックスでのみ必要でした。

于 2013-08-15T21:40:57.693 に答える
0

代わりに単純にできませんでした

echo json_encode($json);

する

die(json_encode($json));

?システムにプロファイラーを印刷する機会を与えません。

于 2012-07-12T07:04:10.057 に答える