如何使CodeIgniter的探查器和ajax请求发挥得很好

时间:2012-07-12 05:37:58

标签: php codeigniter

据我所知,ajax讨厌CIs探查器启用时,因为它在最后将html注入view()方法。在success:$.ajax()回调混淆了。< / p>

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

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

问题:

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

3 个答案:

答案 0 :(得分: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以禁用分析器。

答案 1 :(得分:0)

难道你不能简单地代替

echo json_encode($json);

做一个

die(json_encode($json));

?使系统无法打印出分析器。

答案 2 :(得分:0)

我知道这已经回答了,但是我使用了这个而不是在MY_Controller.php中传递一个字段

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

在Chrome中测试,无论如何只需要在我的开发盒上。