jquery - $.get ajax 方法不适用于 laravel 中的州和城市
问题描述
我想通过它的状态访问城市。此方法在更新 Laravel 5.7 之前有效,现在无效
这是我得到的错误:
jquery-3.3.1.js:9600 GET http://localhost/PTC/public/ajax-city=5 404 (Not Found)
网页.php
Route::get('ajax-city','IndexController@ajaxCities')->name('ajax-city');
public function ajaxCities()
{
$state_id = Input::get('state_id');
$cities = City::where('state_id', '=', $state_id)->get();
return response()->json($cities);
}
我的观点:
<form id="accountForm" name="accountForm" action="{{route('profile')}}" method="post">
@csrf
<select class="form-control" id="state" name="state_id" type="text" placeholder="استان">
<option value="{{$userDetails->state_id ?? ''}}">{{$userDetails->state->title ?? 'انتخاب استان'}}</option>
@foreach($states as $state)
<option value="{{$state->id}}">{{$state->title}}</option>
@endforeach
</select>
<select class="form-control" id="city" name="city_id">
<option value="{{$userDetails->city_id ?? ''}}">{{$userDetails->city->title ?? 'انتخاب شهر'}}</option>
</select>
<button type="submit" class="btn iren-btn btn-block mt-1 mb-2">ثبت</button>
</form>
和脚本:
<script>
//City choose
$().ready(function () {
$('#state').on('change', function (e) {
var state_id = e.target.value;
//AJAX
$.get('ajax-city?state_id=' + state_id, function (data) {
//success data
$('#city').empty();
$.each(data, function (index, cityObj) {
$('#city').append('<option value="' + cityObj.id + '">' + cityObj.title + '</option>')
});
});
});
});
</script>
解决方案
尝试这个:
在“路由/web.php 文件中:
Route::get('ajax-city/{state_id}', 'IndexController@ajaxCities')
->where('state_id', '[0-9]+')
->name('ajax-city');
在“app/Http/Controllers/IndexController.php”中:
public function ajaxCities(Request $request)
{
$state_id = $request->state_id;
$cities = City::where('state_id', '=', $state_id)->get();
return response()->json($cities);
}
并更改脚本:
<script>
//City choose
$().ready(function () {
$('#state').on('change', function (e) {
var state_id = e.target.value;
//AJAX
$.get('ajax-city/' + state_id, function (data) {
//success data
$('#city').empty();
$.each(data, function (index, cityObj) {
$('#city').append('<option value="' + cityObj.id + '">' + cityObj.title + '</option>')
});
});
});
});
</script>
推荐阅读
- git - 撤消 git 重置文件命令
- angular - 在Angular 6中将默认值设置为formArray
- docker - 使用 Kubernetes ConfigMaps 的应用程序配置文件
- javascript - 添加新数据时如何使滚动条保持在底部
- python - 是否可以在运行代码时保持 tkinter 窗口打开?
- c - 为什么 C 允许函数返回本地声明的指针而不是本地声明的数组?
- spring-social - Spring social:在带有负载均衡器的机器上使用 Facebook 进行身份验证
- javascript - 如何从 Puppeteer 中的弹出窗口生成 PDF?
- c# - WPF DoubleAnimationUsingKeyFrames 跳帧
- amazon-web-services - 当我没有记录用户会话时,如何让用户帐户退出“FORCE_CHANGE_PASSWORD”模式?