#php #laravel #dropdown
#php #laravel #выпадающий
Вопрос:
Здравствуйте, я новичок в laravel, у меня возникла проблема при получении данных из базы данных через выпадающий список. У меня есть выпадающий список для классов, поэтому, когда пользователь выбирает любой класс и нажимает кнопку отправки, учащиеся, относящиеся к этому классу, будут отображаться ниже в таблице… У меня есть таблица в базе данных для студентов, где идентификатор класса student существует для каждого студента. Я действительно не могу понять логику этой проблемы. Кто-нибудь может мне помочь?
//Мой контроллер
public function index()
{
$classes = StudentsClass::pluck('class_name', 'id')->all();
$students = Student::all();
return view('admin.students.attendance.index', compact('classes', 'students'));
}
public function mytableAjax($id)
{
$students = DB::table("students")
->where("student_id",$id)
->lists("class_name","id");
return json_encode($students);
}
//Мой взгляд
<option value="">--- Select State ---</option>
@foreach ($classes as $key => $value)
<option value="{{ $key }}">{{ $value }}</option>
@endforeach
</select>
<table id="studentsData" class="table table-striped table-bordered table-list-search">
<thead>
<tr>
<th>#</th>
<th>Student ID</th>
<th>Student Name</th>
<th>Attendance</th>
</tr>
</thead>
@foreach($students as $student)
<tbody>
<tr>
<th>{{$student->id}}</th>
<td>{{$student->student_id}}</td>
<td>{{$student->first_name}} {{$student->last_name}}</td>
<td>
<div class="form-group">
<select class="form-control" id="gender">
<option>Present</option>
<option>Absent</option>
<option>Leave</option>
</select>
</div>
</td>
</tr>
</tbody>
@endforeach
</table>
<a class="fas fa-folder-open btn btn-success float-right mb-4 mr-2"> Save</a>
</div>
//ajax
$(document).ready(function() {
$('select[name="students_class_id"]').on('change', function() {
var classID = $(this).val();
if(classID) {
$.ajax({
url: '/myform/ajax/' classID,
type: "GET",
dataType: "json",
success:function(data) {
$('table[id="studentsData"]').empty();
$.each(data, function(key, value) {
$('table[id="studentsData"]').append('<td value="' key '">' value '</td >');
});
}
});
}
// else{
//
// $('table[id="studentsData"]').empty();
//
// }
});
});
Это то, что я пробовал
Комментарии:
1. Вам нужно настроить ajax и получать связанных студентов на основе вашего выпадающего списка. Вам нужно показать нам, что вы пробовали, чтобы мы могли направлять вас
2. Хорошо, я попробую что-то еще в ajax, приведенный ниже код…
3. Пожалуйста, прочитайте отредактированный выше вопрос
4. Можете ли вы попробовать
dd($students)
и проверить вкладку «Сеть» в браузере? Возвращает ли это правильные данные?5. Без dd ($ students) он выдает мне страницу 200 ok, а с ($ students) теперь он ничего не возвращает
Ответ №1:
Я думаю, что ваш запрос неверен.
public function mytableAjax($id)
{
$students = Student::where('class_id', $id)->get();
// if you try dd($students), you should see it in Network > Preview
return response()->json(['students => $students]);
}
И затем,
$.ajax({
url: '/myform/ajax/' classID,
type: "GET",
success:function(data) {
console.log(data.students)
}
})
Комментарии:
1. Нет, я получаю тот же результат, сэр