После успешного получения результата от фильтра, как показать в файле блейда в Laravel 8

Я работаю над частью фильтра на странице поиска, но проблема в том, что на главной странице поиска все результаты зацикливаются с контроллера, и теперь я использую jquery для процесса фильтрации, но все сбивает с толку. Как это сделать правильно?

Итак, вот процесс:

Шаг 1: пользователь ищет что-то вроде «поддержка», а затем система переходит к файлу searchController и дает результат.

return view('/search')->with(["documents" => $results, "filters" => $filters]);

Здесь $filter указывает фильтры категории; Так

Затем, когда пользователь нажимает на любую категорию, он фильтрует результат, но теперь проблема в том, что я использую jquery, и теперь все становится странно. Может ли кто-нибудь помочь мне в этом.

JS-код:

$(document).on("click", ".category_filter1",function() {
    var test = new Array();
    $("input[name='category_filter']:checked").each(function() {
        test.push($(this).val());
    });
    showValue(test);
});

function showValue(data){
    $.ajax({
        'url': 'search/filter/'+(data.length > 0 ? data : "all"),
        'type': 'GET',
        success: function(response){ // What to do if we succeed
            if (response.data == "success")
                document.getElementById('result').innerHTML = response.categories;
        },
        error: function(response){
            // alert('Error');
        }
    });
}

и Контроллер, откуда пришли все результаты:

public function filter($data){
        $t_data = explode(',' , $data);
        $filters = $this->load_filters();
        if (count($t_data)>0 && $t_data[0]!== "all"){
            $results = DB::table('documents')
                        ->whereIn('category', $t_data)
                        ->paginate(5);
        }else{
            $results = Document::paginate(5);
        }
        return redirect('/search')->with(["documents" => $results, "filters" => $filters]); // This part is really confusing
    }

Таким образом, поток будет таким:

`теперь все становится странным`, что вы подразумеваете под странным, а также то, что вы показали на последней диаграмме, которую вы хотите перенаправить с контроллера, но запрос должен быть отправлен с помощью ajax?

bhucho 26.12.2020 08:26

Я хочу создать фильтр категорий, как показано на рисунке, но есть флажок, поэтому мне нужно вызывать функцию через ajax. Если я вызываю функцию из ajax, мне нужно зациклить результат через jquey, Итак, как я буду управлять предыдущий результат и замените эти результаты результатом фильтров, потому что данные изначально получены из seachController. Я знаю, что здесь все грязно

Pooja 26.12.2020 08:32

Но я не понял весь процесс?

Pooja 26.12.2020 08:32

верните ответ от контроллера как json, затем, когда вы вызываете запрос на фильтр в соответствии с флажком, покажите результат, который вы получили как json, используя jquery; как вы сказали, что хотите получить результат в соответствии с флажком, затем, как только пользователь нажмет на флажок, отправьте запрос jquery на контроллер, он вернет json, а затем покажет результат, прокручивая json

bhucho 26.12.2020 09:05

Но в этом есть подвох. Мои изображения загружаются через <img src = "{{ route('load_image',$data->document_id) }}" class = "img-fluid rounded" alt = ""> тогда я не попадет по URL-адресу изображения.

Pooja 26.12.2020 09:08

Я не могу сделать это без jquery?

Pooja 26.12.2020 09:09

поместите изображения в общую папку, тогда вам даже не придется вызывать маршруты, чтобы показать ваши изображения с быстрой загрузкой, как есть

bhucho 26.12.2020 09:10
Can't I do this without jquery? тогда вам придется полностью обновить страницу, как вы планируете это сделать, если вы не хотите jquery, тогда используйте vue или любые другие интерфейсные фреймворки
bhucho 26.12.2020 09:11

/storage/public или основная /общедоступная папка? Текущий он находится в папке /storage/public

Pooja 26.12.2020 09:11

основная общая папка

bhucho 26.12.2020 09:11

хорошо, спасибо за помощь, я думаю, мне придется пойти с этим @bhucho

Pooja 26.12.2020 09:12
stackoverflow.com/a/38980278/9471283 здесь показано, как вызвать файл из изображений общедоступных папок
bhucho 26.12.2020 09:14
Поведение ключевого слова "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) для оценки ваших знаний,...
4
12
511
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Подводя итог тому, что обсуждалось в комментариях,

  • Чтобы вызвать контроллер без обновления страницы, вам нужно использовать ajax (используйте jquery или любой другой интерфейсный фреймворк). Верните свой ответ в формате json,
return response()->json($your_return_array);
  • Изображения храните в общей папке, например public/images/your-image.png. Затем вызовите его с помощью метода url() в своем лезвии.
<img src = "{{url('/images/your-image.png')}}" alt = "Image"/>

хорошее представление вашего вопроса, а также :)

bhucho 26.12.2020 09:24

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