Я хочу получить доступ к городу по его состоянию. Этот метод работал до обновления Laravel 5.7. Теперь не работает
это ошибка, которую я получил:
jquery-3.3.1.js:9600 GET http://localhost/PTC/public/ajax-city=5 404 (Not Found)
web.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>

Попробуй это:
В файле "routes / 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>