#javascript #ajax #laravel #laravel-5
#javascript #ajax #laravel #laravel-5
Вопрос:
Я пытаюсь опубликовать данные из выпадающего списка и отправил запрос с помощью Ajax. Он отлично работает на локальном хостинге, но не работает должным образом на общем хостинге. У меня есть 3 выпадающих списка, и значение изменяется в соответствии со значениями, выбранными из родительского dropbox. Например: марка автомобиля (Audi) -> Модель автомобиля -> (A4, A5, Q5 и т.д. Модели audi) -> год выпуска (19XX — 2019)
Я могу только выбрать марку, но я не могу получить какие-либо данные из выбранной марки автомобиля.
home.blade.php
<div class="form-group">
<select class="form-control dynamic" name="Make" id="Make" data-dependent='Model'>
@foreach($carLists as $carMake)
<option value="{{$carMake->Make}}">{{$carMake->Make}} </option>
@endforeach
</select>
</div>
<div class="form-group">
<select class="form-control dynamic" name="Model" id="Model" data-dependent='Year'>
<option value="">Select Model</option>
</select>
</div>
<div class="form-group">
<select class="form-control dynamic" name="Year" id="Year" data-dependent='Body'>
<option value="">Select Manufacturing year</option>
</select>
</div>
<script>
$(document).ready(function(){
$('.dynamic').change(function(){
if($(this).val() != '')
{
var select = $(this).attr("id");
var value = $(this).val();
var dependent = $(this).data('dependent');
var _token = $('input[name="_token"]').val();
$.ajax({
url:"{{ route('pagescontroller.fetch') }}",
method:"POST",
data:{select:select, value:value, _token:_token, dependent:dependent},
success:function(result)
{
$('#' dependent).html(result);
}
})
}
});
$('#Make').change(function(){
$('#Model').val('');
$('#Year').val('');
$('#Make').val($(this).val());
console.log($('#HidMake'));
});
$('#Model').change(function(){
$('#Year').val('');
});
});
</script>
PageController.php
class PagesController extends Controller
{
function fetch(Request $request)
{
$select = $request->get('select');
$value = $request->get('value');
$dependent = $request->get('dependent');
$data = DB::table('carLists')
->where($select, $value)
->groupBy($dependent)
->get();
$output = '<option value="">Select '.ucfirst($dependent).'</option>';
foreach($data as $row)
{
$output .= '<option value="'.$row->$dependent.'">'.$row->$dependent.'</option>';
}
echo $output;
}
Маршруты (web.php )
Route::post('inc/sidebar/fetch', 'PagesController@fetch')->name('pagescontroller.fetch');
Я много пытаюсь, но понятия не имею, что здесь происходит не так, однако на локальном хостинге все работает нормально.
спасибо, что уделили время.
Комментарии:
1. то, что вы получили в ответе ajax, означает 404 или что-то еще. проверьте на вкладке сети вашего браузера или в консоли
2. an
object { }
3. повторите что-то в вашей функции контроллера и умрите; это
4. и я также получил: Ошибка исходной карты: запрос не выполнен со статусом 404 URL ресурса: stagingcars.com/local/bootstrap.css URL исходной карты: bootstrap.min.css.map[Узнать больше]
5. это не причина, это просто предупреждение.
Ответ №1:
Попробуйте изменить URL на
var url = APP_URL '/inc/sidebar/fetch';
и установить заголовок
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
вместо
var _token = $('input[name="_token"]').val();
и дайте мне знать, какой результат вы получаете для этого.
Комментарии:
1. привет, я разобрался с проблемой. Проблема заключалась в имени таблицы. Я неправильно написал имя таблицы в контроллере. Но спасибо за вашу помощь