【发布时间】:2016-10-04 05:53:14
【问题描述】:
我是 Laravel 的新手,我正在尝试学习如何创建一个动态下拉框,其中第二个下拉框会根据第一个下拉框的选择而改变。
这是我的刀片文件中的表单代码:
{!! Form::open(array('url'=>'', 'files'=>true)) !!}
<label>Select a Cinema:</label><br>
<select id = "cinema" name = "cinema">
@foreach ($cinemas as $cinema)
<option value="{{$cinema->id}}">{{$cinema->name}}</option>
@endforeach
</select>
<br>
<label>Select a session:</label>
<br>
<select id = "sesh" name = "sesh">
<option value=""></option>
</select>
<br>
<label>Number of tickets:</label><br>
<select id = "count" name ="count">
@for ($i = 1; $i < 10; $i++)
<option value="{{$i}}">{{$i}}</option>
@endfor
</select>
<br><br>
<input type="submit" value="Submit">
{!!Form::close()!!}
这是我的 AJAX 代码(也在刀片文件中,但在 <script> 标签中:
<script>
$('#cinema').on('change', function(e){
console.log(e)
window.alert("On Change");
var cinema_id = e.target.value;
//ajax
$.get('/ajax-subcat?cinema_id=' + cinema_id, function(data){
//success data
console.log(data);
window.alert("On Success");
$('#sesh').empty();
$.each(data, function(index, subcatObj){
$('#sesh').append('<option value=""' + subcatObj.id +'">'+subcatObj.name+'</option>');
});
});
});
</script>
最后这是我的路线:
Route::get('/ajax-subcat', function(){
$cinema_id = Input::get('cinema_id');
$sessions = Session::where('cinema_id', '=', $cinema_id)->get();
return Response::json($sessions);
});
所以这段代码没有生成任何数据,而是给我一个 404 错误。
我已经通过警报验证了 AJAX 代码确实进入了“更改”功能,但是它没有显示第二个警报。在我有限的理解中,我觉得我的路线文件可能有问题?就好像路由文件正在返回数据一样,AJAX 中的下一个函数应该正在运行。
我在路由代码中不明白的一件事是 Input::get('cinema_id') 正在做什么。我认为它正在抓取用户在下拉框中输入的内容?
【问题讨论】:
-
您的路由“/ajax-subcat”是否位于任何路由组内?
-
我不知道,对不起,你到底是什么意思?你的意思是放这个:Route::get('/ajax-subcat');在 Route::group 部分内?
-
是的,您的路线是否放置在带有任何前缀的 Route::group() 中?
-
不,不是。是故意的吗?
-
运行
php artisan routes查看路由是否注册。
标签: javascript php jquery ajax laravel