据我所知,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请求启用。如果当然有更好的解决方案,请告诉我。但谷歌没有透露任何信息。
答案 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中测试,无论如何只需要在我的开发盒上。