When I need to do an ajax in a controller I do this:
<script>
$(function (){
$.ajax({
type: 'GET', // ou post
url: '<?= site_url('controller/action'); ?>',
dataType: 'json',
success: trataRetorno //function que irá tratar o retorno
});
});
function trataRetorno(retorno){
// código que irá manipular o retorno da query
// utilize console.log(retorno) para depurar o retorno
}
</script>
No controller:
public function action () {
$this->load->model('Modelo_model');
echo json_encode($this->Modelo_model->executa_query());
}
EDIT:
To pass the value of select to php you can do this:
javascript
// vamos criar um evento para capturar a mudança do valor no select... caso queira outro trigger é só alterar a linha abaixo.
$('select#IdDoSelect').on('change', function (){
pegaValorDoMes($(this).val()); // se for utilizar um evento atribuido a outro objeto que não seja o seu select você também deve trocar esse $(this) pelo seletor apropriado do seu select
});
function pegaValorDoMes(valor) {
$.ajax({
type: 'GET', // ou post
url: '<?= site_url('controller/action'); ?>',
dataType: 'json',
data: valor, // essa é a única novidade no javascript... serve para passar o valor do campo para o controller
success: trataRetorno //function que irá tratar o retorno
});
}
function trataRetorno(retorno){
$('input#IdDoInput').val(retorno.valor);
}
config / routes.php
$routes['controller/action/(:num)'] = 'controller/action/$1'; //essa configuração permite que a sua action receba o valor do get feito pelo ajax
controllers / controller.php
public function action($mes) {
// caso você opte por usar POST é só tirar as configurações de GET e utilizar o $this->input->post(mes); que irá funcionar normalmente
$this->load->model('Modelo_model');
echo json_encode($this->Modelo_model->executa_query($mes)); // essa é a linha que possibilita que o javascript trabalhe com o resultado em forma de objeto
}
models / Model_model.php
public function executa_query($mes){
// aqui você vai realizar sua query normalmente retornando o array de resultado
$this->db->select('valor');
$this->db->where(array('mes' => $mes));
$this->db->get('tabela')->row_array();
}
Note: Remembering that this is a very rough example, just to give you the idea of what should be done. If you still have any questions, just let me know and I'll try to dig deeper.