Как это сделать с помощью Ajax / Laravel (изменить запрос по нажатию на ссылку)

-1

Я столкнулся с проблемой, которую я не могу решить (я даже не могу понять, как это сделать).

У меня есть четыре ссылки:

Изображение 174551

По умолчанию, когда мы приходим на страницу, у нас есть все данные (все ссылки). Я создал кнопку "загрузить больше", чтобы загрузить больше данных в нижней части страницы.

Мне бы хотелось, когда я нажимаю "3D" или "WEB", он делает мне AJAX-запрос на основе SQL-запроса или что-то в этом контроллере, чтобы я мог получать нужные мне данные.

Вот мой контроллер:

public function indexGraduated(Request $request)
{
    $students = Student::orderBy('year', 'desc')->inRandomOrder()->paginate(12);

    if($request->ajax())
    {
        return [
            'students' => view('ajax.graduate',
                [
                    'students' => $students,
                    'orientations' => $this->getOrientation()
                ])->render(),
            'next_page' => $students->nextPageUrl()
        ];
    }

    return view('pages.graduate', [
        'students' => $students,
        'orientations' => $this->getOrientation()
    ]);
}

Вот мой код ajax:

$.ajax({
  url: page,
    beforeSend: function () {
      button.addClass('loading');
     },
     success: function (data) {
      $('.container').append(data.students);
      button.attr('href', data.next_page);
      button.removeClass('loading');
      },
     })

Каков правильный способ сделать это?

большое спасибо вам

1 ответ

1
Лучший ответ

Одним из способов было бы иметь скрытое поле на странице и установить его значение в соответствии с выбранной ссылкой.

На странице просмотра держите скрытое поле

<input type="hidden" name="filter" id="filter" value="all">

Определите 4 ссылки, например,

<a href="javascript:setFilter('all');">All</a>
<a href="javascript:setFilter('3d');">3D</a>
<a href="javascript:setFilter('2d');">2D</a>
<a href="javascript:setFilter('web');">Web</a>

Javascript

<script type="text/javascript">
    function setFilter(f) {
        switch (f) {
            // all
            case 'all':
                document.getElementById('filter').value = 'all';
                break;

            case '2d':
                document.getElementById('filter').value = '2d';
                break;
            // and so on
        }
    }
</script>

AJAX

$.ajax({
    url: the_url,
    data: {
        input: $('#filter').val();,
   },
  ...

Теперь в контроллере получите значение input и соответственно запишите записи.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню