使用Ajax从数据库中获取数据 - Laravel

时间:2017-10-21 20:42:18

标签: php ajax laravel

我正在使用ajax将数据库中的数据检索到选择框中。当我选择一个组时,它应该分别显示它的内容。

当我尝试显示表单时,它显示Undefined variable: packages但我在控制器的视图中有返回包。

我有什么遗漏的吗?

PackageController

 public function create()
    {
        $groups = Group::all();
       $selectedGroup = $group->pluck('id')->toArray();
        return view('group.detail',compact('selectedGroup','groups'));
    }


    public function getpackages($id)
   {
    $groups =  Group::findOrFail($id);
    $packages= $groups->packages;

    return view('group.detail',compact('packages'));
    return $id;

   }

group.details.blade.php

<div class="input-group control-group after-add-more">

          <div class="form-group">
          <!-- <label for="select" class="col-lg-2 control-label">Select Item</label> -->
          <div class="col-lg-10">
          <select class="form-control" id="group" name="group[]" mulitple>
          @foreach($groups as $group)
          <option value="{!! $group->id !!}" @if(in_array($group->id, $selectedGroup)) selected="selected" @endif >
                         {!! $group->name!!}
          </option>
              @endforeach
          </select>


          </div>


          </div>


          <div class="form-group">
          <!-- <label for="select" class="col-lg-2 control-label">Select Item</label> -->
          <div class="col-lg-10">
          <select class="form-control" id="remove_select" name="packages" mulitple>
          @foreach($packages as $package)
          <option value="{!! $package->id !!}" >
                         {!! $package->name!!}
          </option>
              @endforeach
          </select>



          </div>


          </div>


<script>
 $('#category').change(function(e)
 {
 e.preventDefault();

$y = $(this).val();
  alert($y);

$.ajax
 ({
 url: '{{ url('getpackages') }}/'+$y,
 type: 'GET',
 dataType: 'json',
 success: function(data)
 {
 console.log(data);
 }
 });
 });
 </script>

1 个答案:

答案 0 :(得分:1)

两个控制器操作都使用相同的视图,但它们都没有传递视图所需的所有值。当create控制器操作加载视图时,它不会定义$packages变量,这就是您收到该通知的原因。

您需要将视图分成两个单独的视图:一个用于create控制器操作,另一个用于getpackages控制器操作。

我认为这里的根本问题是你没有单独处理你的初始请求和你的ajax请求。