Filtreleme açılan menü 'ajax ve PHP ile

0 Cevap php

Ben CodeIgniter MVC uygulama var.

Ben bir yöntem olan bir modeli olarak adlandırılan şehir var:

<?php
class Cities_model extends Model{    

function Cities_model(){
    parent::Model();
}

function get_cities($id = null){
    $this->db->select('id, city_name');

    if($id != NULL){
        $this->db->where('country_id', $id);
    }

    $query = $this->db->get('cities');

    $cities = array();

    if($query->result()){
        foreach ($query->result() as $city) {
            $cities[$city->id] = $city->city_name;
        }
        return $cities;
    }else{
        return FALSE;
    }  
}
...

Denetleyici:

function Post(){
    $this->load->helper('form');
    $this->load->model('cities_model');
    $this->load->model('country_model');
    $this->load->model('field_model');

    $data['cities'] = $this->cities_model->get_cities();//optional $id parameter 
    $data['countries'] = $this->country_model->get_countries();

    $data['fields'] = $this->field_model->get_fields(); //subject field

    $this->load->view('post_view',$data);
}

Bu yöntem, bir açılan liste içeriğini doldurmak için kullanılır. Ben de bir açılan olan ülkeler için benzer bir model var.

Sen get_cities yöntem country_id kabul etmek kurmak olduğunu görebilirsiniz. Bir ülke seçilmiş ise bu sonuçları filtrelemek için kullanılacak.

Benim soru Ajax (tercihen jQuery) kullanarak bu yöntemi çağırmadan yardıma ihtiyacım olduğunu. Ajax için yeni ve daha önce böyle bir şey yapmadım.

Herhangi bir yardım çok takdir!

Cop

UPDATE

Ben jquery kütüphanesini ekledim ve benim denetleyicisi yöntemi oluşturduk:

function get_cities($country){
    header('Content-Type: application/x-json; charset=utf-8');
    echo(json_encode(array($this->cities_model->get_cities($country))));
}

Burada benim görünümünde benim javascript:

<script type="text/javascript">

  $(document).ready(function(){

  $('#country').change(function(){
    var country_id = $('#country').val();  // here we are taking country id of the selected one.
    $.ajax({
     type: "POST",
     url: "<?php echo base_url(); ?>home/get_cities/"+country_id,
     data: ({country : country_id}),
     success: function(cities){
       $.each(cities,function(i,city)
       {
          var opt = $('<option />');
          opt.val(city.value);
          opt.text(city.text);
          $('#cities').append(opt);
       });
    }

  });

  });
  });

Bu json Cevap:

[{"2":"Accra"}]

Bu yüzden başarıyla doğru verileri retriving edilir. tek sorun bu açılan boş değerler / metin ekleyerek ediyor olduğunu. ve ben veri eklendi ediliyor şehri değiştirmek, bu yüzden sanırım her zaman ilk açılan temizlemek zorundayız?

0 Cevap