Javascript 在更新时使用Ajax、jQuery和Codeigniter基于另一个下拉列表填充下拉列表

Javascript 在更新时使用Ajax、jQuery和Codeigniter基于另一个下拉列表填充下拉列表,javascript,php,jquery,html,codeigniter,Javascript,Php,Jquery,Html,Codeigniter,我创建了一个下拉列表,它填充了另一个下拉列表 我已经在我的应用程序中创建了一个更新模式,我希望下拉列表的选定值是从数据库中获取的名称。它显示了名称,但问题是它没有显示应该包含的其他名称 请注意,名称的显示取决于第一个下拉列表 这是我的模型 function get_agents($campaign_id) { $campaign_id1 = mysqli_real_escape_string($this->db->conn_id,trim($campaign_id));

我创建了一个下拉列表,它填充了另一个下拉列表

我已经在我的应用程序中创建了一个更新模式,我希望下拉列表的选定值是从数据库中获取的名称。它显示了名称,但问题是它没有显示应该包含的其他名称

请注意,名称的显示取决于第一个下拉列表

这是我的模型

function get_agents($campaign_id)
{
    $campaign_id1 = mysqli_real_escape_string($this->db->conn_id,trim($campaign_id));
    $query = $this->db->query("SELECT tbl_employee.emp_id, CONCAT(tbl_applicant.fname, ' ', tbl_applicant.lname) AS fullname FROM tbl_applicant INNER JOIN tbl_employee ON tbl_employee.apid=tbl_applicant.apid INNER JOIN tbl_account ON tbl_employee.acc_id=tbl_account.acc_id WHERE tbl_account.acc_id='".$campaign_id1."' ORDER BY tbl_applicant.fname ASC");
    return $query->result();
}
这是我的控制器

public function getAgents()
{
   $campaign_id = $this->input->post('campaign_id');
   $data = $this->KudosModel->get_agents($campaign_id);
   echo "<option value=''>-- Select Ambassador Name --</option>";
   foreach($data as $a)
   {
       echo "<option value='".$a->emp_id."'>".$a->fullname."</option>";
   }
}
这是我的看法

<div class="form-group" style="height: auto; overflow: auto;">
<label class="col-sm-3 control-label float-left">Ambassador Name</label>
<div class="col-sm-9">
    <select class="form-control" id="agentNames<?php echo $val->kudos_id; ?>" required="true" data-trigger="change" value="<?php echo $val->ambassador; ?>">
        <option selected="" value="">-- Select Ambassador Name --</option>
        <option selected="selected" value=""><?php echo $val->ambassador;?></option>
        <?php 
        foreach($name2 as $row)
        {
            if($val->campaign==$row->acc_name)
                echo '<'; if($val->ambassador==$row->fullname){
                    echo 'selected=selected';
                }echo'option value="'.$row->emp_id.'">'.$row->fullname.'</option>';
            }
        ?>
    </select>
</div>
这是我的JQuery

$('#addCampaign<?php echo $val->kudos_id; ?>').on('change', function(){
        $.ajax({
            type : 'POST',
            data : 'campaign_id='+ $('#addCampaign<?php echo $val->kudos_id; ?>').val(),
            url : "<?php echo base_url(); ?>index.php/Kudos/getAgents/",
            success : function(data){
                //data returns your name, iterate through it and add the name to another select
                $('#agentNames<?php echo $val->kudos_id; ?>').html(data);
            }
        });
    });

正如你在上一个问题中被告知的那样,这是一个糟糕的方法。更好的方法是从服务器返回JSON,并在success函数中构建HTML。无论如何,在你看来,你最终会发现我该怎么做?堆栈溢出不是一个免费的编程学校;从php的json_编码开始,学习如何使用JS构造DOM元素。