我正在使用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>
答案 0 :(得分:1)
两个控制器操作都使用相同的视图,但它们都没有传递视图所需的所有值。当create
控制器操作加载视图时,它不会定义$packages
变量,这就是您收到该通知的原因。
您需要将视图分成两个单独的视图:一个用于create
控制器操作,另一个用于getpackages
控制器操作。
我认为这里的根本问题是你没有单独处理你的初始请求和你的ajax请求。