首页 > 解决方案 > 如何在 laravel 中使用 jquery 将数据库值附加到 select2

问题描述

我使用多选下拉菜单在数据库中插入了 select2 值,但是当我编辑模式时,它在所选值中没有返回值。我在 Laravel 中使用 jquery ajax。

形式

<form id="userForm" name="userForm" class="form-horizontal" data-parsley-validate="">
   <input type="hidden" name="user_id" id="user_id">
   <div class="form-group">
   <label for="email" class="col-sm-2 control-label">Project</label>
   <div class="col-sm-12">
      <select id="project_id" name="project_id[]" class="selectpicker form-control" multiple data-live-search="true">
      @foreach (projects() as $project)
      <option @if (old('project_id') == $project->id) selected @endif value="{{ $project->id }}">{{ $project->name }}</option>
      @endforeach
      </select>
      <span class="text-danger error_message" id="projectIdError"></span>
   </div>
   <div class="col-sm-offset-2 col-sm-10">
      <button type="submit" class="btn btn-primary" id="saveBtn" value="create">Add User
      </button>
   </div>
</form>

编辑jquery代码

 $('body').on('click', '.editUser', function () {
      var user_id = $(this).data('id');

      $('#saveBtn').html('Update User');
      $.get("{{ url('admin/user') }}" +'/' + user_id +'/edit'  , function (data) {
          $('#modelHeading').html("Edit User");
          $('#saveBtn').val("edit-user");
          $('#ajaxModel').modal('show');
          $('#user_id').val(data.id);
          $('#name').val(data.name);
          $('#email').val(data.email);
          $('#project_id').val(data.project_id);
      })
   });

控制器

public function edit($id)
    {
        return $user = User::with('projects')->findOrFail($id);
    }

现在输出 在此处输入图像描述

预期输出:

在此处输入图像描述

标签: jqueryajaxlaravelbootstrap-modaljquery-select2

解决方案


通过此代码修复它

           var projects = data.projects;
           let optArr = [];
              for (var i = 0; i < projects.length; i++) {
                  optArr.push(projects[i].id);
               }
            $('.selectpicker').selectpicker('val', optArr);
            $('.selectpicker').selectpicker('refresh')

推荐阅读