2

我正在将 CodeIgniter 用于我正在从事的项目。

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

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

});

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

4

3 回答 3

4

这是答案:

放在$this->config->set_item('compress_output', FALSE);echo 之前以禁用输出压缩。

来源:http ://codeigniter.com/forums/viewthread/155810/#784452

于 2012-09-04T21:45:50.167 回答
1

如果您正在压缩配置文件中的输出,请尝试设置$config[‘compress_output’] = FALSE;

于 2012-09-04T21:45:33.940 回答
1

当然。

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

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 */
        }
    }
});
于 2012-09-04T21:39:53.680 回答