使用Codeigniter中的Ajax下拉

时间:2016-02-25 13:04:43

标签: ajax codeigniter dropdown

找不到错误,必须在“comunas”数据库中查询。

以下是代码:

1)2个表:

comunas:
com Com Com Com Com Com Com Com Com Com Com Com Com

regiones: regId regNombre

2)控制器:

<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Usuarios extends CI_Controller {

public function __construct()
{
    parent::__construct();
    $this->load->database();
    $this->load->helper('form');
    $this->load->helper('url');
    $this->load->model("regiones_model");
    $this->load->model("comunas_model");

}

public function index_get()
{       
    $data['regionDrop'] = $this->getRegiones();
     //loads up the view with the query results
    $this->load->view('panel/usuario_agrega_view',$data);
 }

    public function getRegiones()
{

    $this->db->select('regId,regNombre');
    $this->db->from('regiones'); 
    $query = $this->db->get();
     // the query mean select cat_id,category from category
     foreach($query->result_array() as $row){
        $data[$row['regId']]=$row['regNombre'];
    }
    // the fetching data from database is return
    return $data;
}
    public function getComunaByRegion($regId=string)
{
    $this->db->select('comId,comNombre, comRegion');
    $this->db->from('comuna');
    $this->db->where('comRegion',$regId); 
    $query = $this->db->get();
    return $query->result();
}
         //call to fill the second dropdown with the comunas
public function buildDropComunas()
{
     //set selected country id from POST
  echo $regId = $this->input->post('id',TRUE);

    //run the query for the comunas we specified earlier
   $districtData['districtDrop']=$this->comunas_model->getComunaByRegion($regId);
   $output = null;

    foreach ($districtData['districtDrop'] as $row)
    {
        //here we build a dropdown item line for each query result
        $output .= "<option value='".$row->comNombre."'>".$row->comNombre."</option>";
    }

    echo  $output;
}
}

3)模型:我没有在模型中使用查询,我现在不能“触摸它们”,所以我将该代码直接放在控制器中。

4)查看:

<script type="text/javascript">
$(document).ready(function() { 
            $("#regionesDrp").change(function(){

                 /*dropdown post *///
                  $.ajax({
                url:"<?php echo base_url();?>usuarios/buildDropComunas",
                 data: {id: $(this).val()},
                type: "POST",
                success:function(data){

                    $("#comunaDrp").html(data);
                }
                });
            });
        });

    </script>

    <!--country dropdown-->
    <?php 
    echo form_dropdown('regionesDrp', $regionDrop,'','class="required" id="regionesDrp"');  ?>

我尝试按照以下示例进行操作:http://www.c-sharpcorner.com/uploadfile/225740/cascading-drop-down-in-codeigniter-using-ajax/

但我有一个不同的数据库(FK comId),正如我告诉你的那样,我不能使用模型文件。无论如何,我尝试使用region_model和comuna_model,但它是一样的。

2 个答案:

答案 0 :(得分:0)

使用append()而不是html()

$("#comunaDrp").append(data);

答案 1 :(得分:0)

首先,函数getComunaByRegion应为:

public function getComunaByRegion($comRegion=string)
{
    $this->db->select('comId,comNombre');
    $this->db->from('comunas');
    $this->db->where('comId',$comRegion);
    $query = $this->db->get();
    return $query->result();
}

另外,在控制器中,函数public function buildDropComunas_post()没有用POST调用,这是我找不到404的主要原因。