2012-09-04 36 views
2

我正在使用CodeIgniter来处理我正在处理的项目。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(),但它对我没有任何意义。

回答

1

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

1

当然。

使用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 */ 
     } 
    } 
}); 
4

这就是答案:

$this->config->set_item('compress_output', FALSE);之前刚刚回声以禁用输出压缩。

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

+2

我的答案:)不同的方式 – Deepak

+1

@Deepak:优点史蒂夫的anwser是,你可以在默认情况下离开压缩并禁止在必要的时候,在使用anwser就意味着无压缩的任何地方。 –

相关问题