3

据我所知,ajax 讨厌启用 CI 分析器,因为它将 html 注入到最后的方法view()中。这与.success:$.ajax()

我的想法是,与其定义$this->output->enable_profiler(false);用于 ajax 调用的所有方法,我可以在扩展 CI_Controller.. 或其他地方的钩子或核心控制器中使用以下代码,只是不确定将其放在哪里。

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

问题:

我可以在哪里放置以下代码,以使 CI 禁用探查器(如果它仅针对将在所有区域全局生效的 ajax 请求启用)。当然,如果有更好的解决方案,请告诉我。但谷歌什么也没透露。

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 回答