Зависимый выпадающий с использованием Ajax в Laravel - PullRequest
0 голосов
/ 17 апреля 2019

У меня есть раскрывающийся список для student_id.Теперь я хочу отслеживать имя студента и класс из другой таблицы, когда кто-то выбирает любой идентификатор студента.Я сделал что-то для этого, используя ajax.Это не показывает мне какую-либо ошибку в консоли, а просто дает мне нулевой массив, и я думаю, что это проблема, связанная с запросом.Вы можете проверить мой код ниже.:)

// Контроллер

public function create()
    {
        $students = Student::pluck('student_id', 'id')->all();
        return view('admin.reports.create', compact('students'));
    }

    public function reportsAjax(Request $request) {
        $students = DB::table("students")->where("student_id", $request->student_id)->pluck("student_id","id");
        return json_encode($students);
    }

// Просмотр и Ajax

<div class="form-group">

                        <label for="title">Select Student <span style="color: red">*</span></label>

                        <select name="student_id" class="form-control bg-dark text-white" >

                            <option>Select Student</option>

                            @foreach ($students as $key => $value)

                                <option value="{{ $key }}">{{ $value }}</option>

                            @endforeach

                        </select>

                    </div>
                    <div class="form-group">
                        <label class="control-label">Student Full Name <span style="color: red">*</span></label>
                        <input name="std_name" type="text" required class="form-control" />
                    </div>
                    <div class="form-group">
                        <label class="control-label">Class <span style="color: red">*</span></label>
                        <input name="std_class" type="text" required class="form-control" />
                    </div>


<script type="text/javascript">

        $(document).ready(function() {

            $('select[name="student_id"]').on('change', function() {

                var studentInfo = $(this).val();

                if(studentInfo) {

                    $.ajax({

                        url: '/reports/ajax/'+studentInfo,

                        type: "GET",

                        dataType: "json",

                        success:function(data) {

                            $('input[name="std_name"]').empty();

                            $.each(data, function(key, value) {

                                $('select[name="std_name"]').append('<input  value="'+ key +'">'+ value +'/>');

                            });


                        }

                    });

                }else{

                    $('select[name="std_name"]').empty();

                }

            });

        });

    </script>

// Маршруты

Route::get('reports/ajax/{id}',array('as'=>'reports.ajax','uses'=>'ReportController@reportsAjax'));

Route::resource('admin/reports', 'ReportController', ['names'=>[

    'index'=>'admin.reports.index',
    'create'=>'admin.reports.create',

]]);

1 Ответ

0 голосов
/ 17 апреля 2019

Попробуйте это для ваших запросов:

    public function create()
    {
        $students = Student::all()->only(['student_id', 'id']);
        return view('admin.reports.create', compact('students'));
    }

    public function reportsAjax(Request $request) 
    {
        $students = DB::table('students')->where('student_id', $request->student_id)->only(['student_id','id']);
        return response()->json($students, 200);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...