Ciao a tutti, sto facendo un piccolo sito con codeigniter mi trovo in difficoltà nel gestire le chiamate json.
Praticamente voglio che selezionando una provincia si riempia una select con i comuni che appartengono a quella provincia...però sembra che il controller codeigniter con prenda correttamente la variabile post.
Ecco il codice jquery
codice:
var param = {
"prov": idProvincia
};
$.ajax({
type: "POST",
url: this."sito.it/index.php/controller/filter_comuni",
dataType: "json",
data: JSON.stringify(param),
contentType: 'application/json',
success: function(response){
for(var i = 0; i < response.length; i++){
var $option = $("<option></option>");
$option.attr("value", response[i].id);
$option.html(response[i].value);
$('#comune').append($option);
}
},
error: function(jqXHR, text, error){
alert("Error! "+text);
}
});
Come vedete gli passo l'oggetto param = {"prov": idProvincia} che viene preso correttamente (ho controllato con firebu e il post è {"prov": numero}), il problema è la risposta che è sempre false. Ecco il codice php del controller:
Codice PHP:
public function filter_comuni(){
header('Content-type: application/json');
$provincia = json_decode($this->input->post("prov"));
echo json_encode($this->concert_model->get_comuni($provincia));
}
e per completezza quello del model che fa la query:
Codice PHP:
public function get_comuni($provincia){
$query = $this->db->select("id, comune")
->where("id_provincia", $provincia)
->order_by("comune")
->get("comuni");
if($query->num_rows <= 0){
return FALSE;
}
$comuni = array();
foreach($query->result() as $row){
$comune = array(
"id" => $row->id,
"value" => $row->comune
);
array_push($comuni, $comune);
}
return $comuni;
}
grazie a tutti!