【问题标题】:display selected options in multi select dropdown list using ajax and codeigniter使用 ajax 和 codeigniter 在多选下拉列表中显示选定的选项
【发布时间】:2019-10-14 07:03:20
【问题描述】:

我需要使用 ajax 在多选下拉列表中显示选定的选项(已从数据库中保存的选项)。

ajax的响应是这样的

{"skill":[{"skill":"css"},{"skill":"Laravel"}]}

我需要在下拉列表中显示这些值。

我的 javascript ajax 函数

$.ajax({
            url: "<?php echo base_url(); ?>recruiter/fetch_user_skill",
            method: "POST",
            data: {userid: user_id},
            success: function (response) {

                var JSONObject = JSON.parse(response);
                alert(response);
            }
        });

php 脚本

型号

function fetch_users_skill($user)
{
    $query = $this->db->query("SELECT `skill` FROM `user_skills` WHERE user_id='$user'");

    if($query->num_rows()>0) {
        foreach($query ->result() as $row)
        {
            $data[] = $row;
        }
        return $data;
    }
}

控制器

public function fetch_user_skill()
{
    $user_id = $_POST['userid'];
    $this->load->model('recruiter_model');
    $data["skill"] = $this->recruiter_model->fetch_users_skill($user_id);
    echo json_encode($data);
}

查看

<select class="form-control" id="skill" name="skills[]" multiple="multiple" name="skills" style="width: 600px !important;">
                    <option value="">--Select Name---</option>
                    <?php
                    if ($skills->num_rows() > 0) {
                        foreach ($skills->result() as $skills_row) {
                            ?>
                            <option value="<?php echo $skills_row->skill; ?>"><?php echo $skills_row->skill; ?></option>
                            <?php
                        }
                    }
                    ?>

                </select>

如何将这些值设置为从 js 中选择的。 提前致谢。

【问题讨论】:

  • 您的代码易受 SQL 注入攻击。您应该使用准备好的语句。
  • @Dharman 我认为 codeigniter 通过清理输入自动防止 sql 注入
  • 你不使用codeigniter。您使用 mysqli,然后将输入直接插入 SQL,这使其易受攻击。

标签: javascript php ajax


【解决方案1】:

您可以使用此代码:

$.ajax({
        url: "<?php echo base_url(); ?>recruiter/fetch_user_skill",
        method: "POST",
        data: {userid: user_id},
        success: function (response) {

            var JSONObject = JSON.parse(response);
            Array.prototype.forEach.call(JSONObject.skill, function(v){
                $('#skill option[value=' + v.skill + ']').attr('selected', 'selected');
            });
        }
    });

【讨论】:

  • 谢谢。当我单击选择框时,将显示选项列表并突出显示选定的选项。但是我需要在加载控件时显示选定的选项而不单击它。到底有没有?
  • 你可以把代码放在$(document).ready(function(){ //code goes here.. })里面
  • 那是不可能的,因为选择框通过按钮单击出现在模态窗口中。在该按钮上单击用户 ID 传递给脚本并获取该用户的技能并将其填充到保管箱中
【解决方案2】:

使用这个

    $.ajax({
        url: "<?php echo base_url(); ?>recruiter/fetch_user_skill",
        method: "POST",
        data: {userid: user_id},
        success: function (response) {

            var JSONObject = JSON.parse(response);

            JsonObject.skill.forEach(function(sk){
                 $('#skill option[value=' + sk.skill + ']')
                      .prop('selected', true);
            })
        }
    });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-29
    • 1970-01-01
    • 2020-07-15
    • 2019-09-13
    • 1970-01-01
    • 1970-01-01
    • 2015-06-16
    相关资源
    最近更新 更多