Я использую laravel 5.6, и моя таблица User имеет внешний ключ f_code для Faculty, и у меня есть 2 раскрывающихся списка Faculty и Programme. Раскрывающийся список факультетов будет автоматически выбран на основе входа в систему с помощью Auth::user()->f-code, в то время как раскрывающийся список программ будет отображать только программу на основе факультета (я уже установил взаимосвязь между двумя таблицами). Я пытаюсь использовать ajax, чтобы вернуть p_code и p_name и добавить их в свой раскрывающийся список Programme, но он не отображает какую-либо программу в раскрывающемся списке. Кто-нибудь может мне помочь? Извините, если мой вопрос немного сбивает с толку, я не уверен, как мне правильно объяснить словами, надеюсь, что мои коды могут объяснить лучше.
Любая помощь будет оценена заранее, спасибо.
Blade View
<!-- FACULTY -->
<select id = "Faculty" class = "form-control Faculty">
<option value = "0" disabled selected>Select Faculty</option>
@foreach($FacultyList as $fac)
<option value = "{{$fac->f_code}}">{{$fac->f_name}}</option>
@endforeach
</select>
<br>
<!-- PROGRAMME -->
<select id = "Programme" class = "form-control Programme">
<option value = "0" disabled selected>Select Programme</option>
</select>
<script type = "text/javascript">
$(document).ready(function(){
var lecturer_faculty = '{{ Auth::user()->f_code }}'
var facSelect = document.getElementById("Faculty");
facSelect.value = lecturer_faculty;
var div=$(this).parent();
var op = " ";
$.ajax({
type:'get',
url:'{!!URL::to('findProgramme')!!}',
data:{'id':facSelect.value},
success:function(data){
op+='<option value = "0" selected disabled>Select Programme</option>';
for(var i=0;i<data.length;i++){
op+='<option value = "'+data[i].p_code+'">'+data[i].programme_name+'</option>';
}
div.find('.Programme').html(" ");
div.find('.Programme').append(op);
},
error:function(){
}
});
});
</script>
Контроллер
function index()
{
$FacultyList = Faculty::all();
return View::make('generateqr',compact('FacultyList'));
}
function findProgramme(Request $request)
{
$data = Programme::select('p_code','programme_name')->where('faculty_id',$request->id)->take(100)->get();
return response()->json($data);
}



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Решено
вместо динамического использования ajax я выбираю данные Programme внутри своего контроллера и передаю их в представление и использую цикл для отображения всех программ
Blade View
<!-- FACULTY -->
<select id = "Faculty" class = "form-control Faculty">
<option value = "0" disabled selected>Select Faculty</option>
@foreach($FacultyList as $fac)
<option value = "{{$fac->f_code}}">{{$fac->f_name}}</option>
@endforeach
</select>
<br>
<!-- PROGRAMME -->
<select id = "Programme" class = "form-control Programme">
<option value = "0" disabled selected>Select Programme</option>
@foreach($ProgrammeList as $prog)
<option value = "{{$prog->p_code}}">{{$prog->programme_name}}</option>
@endforeach
</select>
<script type = "text/javascript">
$(document).ready(function(){
var lecturer_faculty = '{{ Auth::user()->f_code }}'
var facSelect = document.getElementById("Faculty");
facSelect.value = lecturer_faculty;
facSelect.disabled = true;
});
</script>
Контроллер
function index()
{
$FacultyList = Faculty::all();
$ProgrammeList = Programme::select('p_code','programme_name')->where('faculty_id',Auth::user()->f_code)->take(100)->get();
return View::make('generateqr',compact('FacultyList','ProgrammeList'));
}
function findProgramme(Request $request)
{
$data = Programme::select('p_code','programme_name')->where('faculty_id',$request->id)->take(100)->get();
return response()->json($data);
}