2017-08-24 6 views
-1

したがって、国を選択すると州が与えられ、州が都市を与える連鎖リンクでフォームを作成したいと思います。私はdbとテーブルをセットアップして、私は自分のajaxコードを書いています。国のリストはうまくいきますが、国を選択すると、ajaxは選択されたcountry_idに状態フィールドを取り込ませません。逆もまた同様です。 Imはcodeigniter、plzに似たmvcフレームワークを使用しています。私は助けが必要です。AJAX、PHP&MVCで連鎖選択を使用する

これは、ビューの上にある私のAJAX呼び出しとhtmlです:

:これは私のモデルある

function index() 
    { 
     $this->view->data['country']=$this->model->getcountries(); 
     $this->view->data['total_countries']=$this->model->gettotalcountries(); 
     if (isset($_POST['country_id'])) { 
      $country_id = $_POST['country_id']; 

     $this->view->data['info1']=$this->model->getdata1($country_id); 
     $this->view->data['total_info1']=$this->model->gettotaldata1($country_id); 
    } 
     $this->view->render('patient_appointment/index', $noinclude=false, 2); 
    } 

    function getstate() 
    { 

     if(isset($_POST["country_id"]) && !empty($_POST["country_id"])){ 
      $country_id=$_POST['$country_id']; 
      $this->view->data['total_states']=$this->model->gettotalstates($country_id); 
      $this->view->data['state']=$this->model->getstates($country_id); 

     } 
    } 

:これは私のコントローラある

<script type="text/javascript"> 
$(document).ready(function(){ 
    $('#country').on('change',function(){ 
     var countryID = $(this).val(); 
     if(countryID){ 
      $.ajax({ 
       type:'POST', 
       url:'<?php echo URL?>patient_appointment/getstate', 
       data:'country_id='+countryID, 
       success:function(html){ 
        $('#state').html(html); 
        $('#city').html('<option value="">Select state first</option>'); 
       } 
      }); 
     }else{ 
      $('#state').html('<option value="">Select country first</option>'); 
      $('#city').html('<option value="">Select state first</option>'); 
     } 
    }); 

    $('#state').on('change',function(){ 
     var stateID = $(this).val(); 
     if(stateID){ 
      $.ajax({ 
       type:'POST', 
       url:'<?php echo URL?>patient_appointment/getcity', 
       data:'state_id='+stateID, 
       success:function(html){ 
        $('#city').html(html); 
       } 
      }); 
     }else{ 
      $('#city').html('<option value="">Select state first</option>'); 
     } 
    }); 
}); 
    </script> 
<select name="country" id="country"> 
     <option value="">Select Country</option> 
      <?php if ($total_countries > 0) { foreach ($country as $key => $value) { ?> 
          <option value="<?php echo $value['country_id'] ?>"><?php echo $value['country_name'] ?></option> 
          <?php }} else { echo "<option value=''>No data in database</option>"; } ?> 
         </select> 

    <select name="state" id="state"> 

     <option value="">Select country first</option> 
    </select> 

    <select name="city" id="city"> 
     <option value="">Select state first</option> 
    </select> 
         <div name="state" id="state"></div> 

public function __construct() 
    { 
     parent::__construct(); 
    } 
    public function getcountries() 
    { 
     $sth = $this->db->query("SELECT * FROM countries WHERE status = 1 ORDER BY country_name ASC"); 
      $rowss=$sth->rows; 
      return $rowss; 
    } 
    public function gettotalcountries() 
    { 
     $sth = $this->db->query("SELECT * FROM countries WHERE status = 1 ORDER BY country_name ASC"); 
      $rowss=$sth->num_rows; 
      return $rowss; 
    } 
    public function getstates($country_id) 
    { 
     $sth = $this->db->query("SELECT * FROM states WHERE country_id = '$country_id' AND status = 1 ORDER BY state_name ASC"); 
      $rowss=$sth->rows; 
      return $rowss; 
    } 
    public function gettotalstates($country_id) 
    { 
     $sth = $this->db->query("SELECT * FROM states WHERE country_id = '$country_id' AND status = 1 ORDER BY state_name ASC"); 
      $rowss=$sth->num_rows; 
      return $rowss; 
    } 

どうしたらいいですか?

+0

です'select'要素と' div')があります。 'id'はドキュメント内で一意でなければなりません。これは問題かもしれません。 – abhishekkannojia

+0

'data:{country_id:countryID}、 ' – RiggsFolly

+0

@abhishekkannojiaを試してみましたが、まだ回答がありません – Dahlia

答えて

2

Souldこのライン

$country_id=$_POST['$country_id']; 

$country_id=$_POST['country_id']; 

それとも実際にthe CI methodなりますが( `同じ` id`すなわち `ID = "状態" との2つの要素を持っている

$country_id = $this->input->post('country_id'); 
+0

それはひどい間違いです、ありがとう、私はそれを修正しましたが、問題は解決しません – Dahlia

+0

Are Areあなたはビューのようなgetstate()関数から何かを返す? – ourmandave

関連する問題