Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [CI] inviare post json a controller

    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!

  2. #2
    Ho provato a modificare il controller così:
    Codice PHP:
    public function filter_comuni(){        
            
    $provincia $this->input->get_post("prov");
            
            
    $this->output->set_content_type("Content-type: application/json")
                                 ->
    set_output(json_encode($this->concert_model->get_comuni($provincia)));
        } 
    ma la risposta che mi arriva è sempre false...sembra che non prenda il post di "prov", che, verificato con firebug, viene creato correttamente.....dove sto sbagliando?!

    Grazie a tutti!

  3. #3
    Risolto.....il problema non era nel controller ma in jquery...solo che onestamente non capisco il perchè.
    Praticamente ho modificato la chiamata ajax da:
    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);
    			}
    		});
    a
    codice:
    $.post("sito/index.php/controller/filter_comuni", { "provincia": idProvincia },
    			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);
    				}
    			}, "json");
    e adesso funziona correttamente....ma perchè funziona con $.post e non con $.ajax (in cui ho specificato type:"POST")

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.