Php CodeIgniter从控制器返回数据

Php CodeIgniter从控制器返回数据,php,ajax,json,codeigniter,Php,Ajax,Json,Codeigniter,我正在为一个项目使用CodeIgniter 在这样的视图中,我有一个ajax调用: $.ajax({ type: 'GET', url: 'extra/search/infojson/' + $(this).text().replace(/\s/g, "+"); success: function(data) { /* Do something with that data */ } }); infojson是控制器中的一个方法,它接受“use

我正在为一个项目使用CodeIgniter

在这样的视图中,我有一个ajax调用:

$.ajax({
    type: 'GET',
    url: 'extra/search/infojson/' + $(this).text().replace(/\s/g, "+");
    success: function(data) {
        /* Do something with that data */
    }

});

infojson
是控制器中的一个方法,它接受“username”参数,执行搜索,并返回一个JSON对象。是否有任何方法可以返回此数据而不必为其创建另一个视图?此方法将仅用于从这一页返回此类数据,因此我不明白为什么需要为此创建另一个视图。我读过关于
\u output()
,但对我来说没有任何意义。

当然。

使用PHP的
json_encode()
函数返回数据,无需调用
$this->load->view('someview',$data)
在ajax请求时将数据发送回浏览器

class Extra extends CI_Controller{
    function __construct(){
        parent::__construct();
    }

    function search($username){
        $results = your_search($username);
        echo json_encode(array("results" => $results));
    }
}
以及您的jquery:

$.ajax({
    type: 'GET',
    dataType: "json",
    url: 'extra/search/infojson/' + $(this).text().replace(/\s/g, "+");
    success: function(data) {
        if(data.results){
            /* Do something with the results */
        }
    }
});

如果要压缩配置文件中的输出,请尝试将
$config['compress\u output']=FALSE

答案是:

放置
$this->config->set_项('compress_output',FALSE)在回显之前禁用输出压缩


来源:

我的回答不同:)@Deepak:Steve的anwser的优点是,您可以在默认情况下打开压缩并在必要时禁用,而使用anwser意味着任何地方都不会压缩。