Автозаполнение Laravel JS

Я не могу понять, что здесь происходит. Я пытаюсь сделать довольно простой пост ajax для автозаполнения в laravel.

У меня есть поле ввода и место для результатов:

<div class = "form-group">
     <input type = "text" name = "tag_name" id = "tag_name" class = "form-control input-lg" placeholder = "Enter Country Name" />
     <div id = "tagList">
     </div>
</div>

и мой JS

$('#tag_name').keyup(function(){ 
            var query = $(this).val();
            if (query != '')
            {
             //var _token = $('input[name = "_token"]').val();
             $.ajax({
              url:"{{ route('campaigns.search') }}",
              method:"POST",
              data:{query:query, _token: '{{ csrf_token() }}'},
              success:function(data){
               $('#tagList').fadeIn();  
                        $('#tagList').html(data);
              }
             });
            }
        });

        $(document).on('click', 'li', function(){  
            $('#tag_name').val($(this).text());  
            $('#tagList').fadeOut();  
        });  

    });

Маршрут указывает на мою функцию контроллера:

 public function searchTags(Request $request)
{   

    if ($request->get('query'))
    {
        $query = "%" . $request->get('query') . "%";
        $data = CampaignTags::where('TAG_DATA', 'LIKE', $query)->get();

        $output = '<ul>';
        foreach ($data as $row) {
            $output .= '<li><a href = "#">' .$row->TAG_DATA. '</a></li>';
        }

    }

    return json_encode($data);
}

Когда я проверяю по мере ввода, я получаю 200 кодов при поиске, но я не получаю фактических результатов для отображения из базы данных, ответ кажется нулевым

Автозаполнение не должно использовать POST. По определению он ничего не меняет в состоянии, за исключением, возможно, целей ведения журнала или аналитики, а вместо этого извлекает данные. Поэтому запрос GET был бы более подходящим.

Matthew Daly 25.03.2019 20:59

Хм, я когда-либо использовал POST только для автозаполнения, и я всегда видел, как это делается. Я думал, что это должно быть сообщение, потому что я отправляю данные запроса в эту конечную точку.

Geoff_S 25.03.2019 21:00

О, извините, я пропустил вашу переменную $query. Можешь dd($search) посмотреть, не пусто ли. Также вы можете изменить $request->get('query') на $request->query. @MatthewDaly теоретически верно, но на практике не имеет значения

senty 25.03.2019 21:01

Первая проблема: у меня есть $search в кодировке json, но это должно быть $data. Это изменение, по крайней мере, заставило показать весь объект json

Geoff_S 25.03.2019 21:02
return repsonse()->json(['search' => $data]);
senty 25.03.2019 21:03

Где вы берете поиск в этом примере?

Geoff_S 25.03.2019 21:06

@ТомН. Нет, вы по-прежнему можете передавать параметры с помощью GET, просто они будут переданы в URL-адресе. Если он извлекает данные для заполнения чего-либо, обычно это должен быть GET. Использование GET позволяет правильно кэшировать ответы там, где это необходимо, тогда как POST никогда не следует кэшировать.

Matthew Daly 25.03.2019 21:06

@senty, который у меня не работает, но return json_encode($data) возвращает весь объект. Мне просто нужны tag_data объекта в моих позициях

Geoff_S 25.03.2019 21:35

Нравится ->pluck('tag_data')? Я не думаю, что совсем понимаю проблему

senty 25.03.2019 22:13
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
9
47
1

Ответы 1

Я сделал это с помощью typeahead. и ответил на него в другой теме. до

вот ссылка. Автозаполнение Laravel

Другие вопросы по теме