Как скрыть кнопку удаления, если записи не осталось?

Я столкнулся с проблемой при добавлении данных во внешний интерфейс. Я отображаю данные в виде куска 10. Проблема в том, что если запись равна 10, кнопка «Загрузить больше» должна быть скрыта, но кнопка все еще видна. Как решить эту проблему?

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

Аякс:

<script>
    var counter = 0;
    window.onload = function() {
         
        $.ajax({
            url: "/get_jobs",
            cache: false,
            data: {
                "_token": $('#csrf-token').content,
                "counter": counter,
            },
            success: function(response){
                if (response.count < 10){
                        $('#seeMore').hide();
                }
                else{
                     $('#seeMore').show();
                    var data = response.all_jobs;
                    append_data(data);
                counter++;
                }
                
            }
        });
    };

   async function append_data(data){
       for (i = 0; i < data.length; i++) {
           console.info("1 for");
           var html = ' <div class = "col-md-6 col-lg-6 content aos-init aos-animate" data-aos = "fade-right" data-aos-duration = "1100" data-aos-once = "true" style = "margin-bottom: 16px;"><a href = "jobdetail/'+data[i].id+'" class = "d-flex justify-content-between bg-white rounded-10 px-8 pl-lg-13 pr-lg-11 py-9 py-lg-10 align-items-center mb-5 job-card-hover gr-hover-shadow-5 job" style = "min-height:250px"><div class = "texts"><h3 class = "gr-text-6 font-weight-bold text-blackish-blue mb-4">'+data[i].job_title+'</h3><p class = "gr-text-9 mb-0 gr-color-blackish-blue-opacity-7">'+data[i].company+'</p></div><div class = "card-icon"><i class = "fas fa-arrow-right gr-text-8 text-storm"></i></div></a></div>';
           $(html).hide().appendTo("#job_section").fadeIn(1000);
       }
    }

        $("#seeMore").click(function(e){

            $.ajax({
                url: "/get_jobs",
                cache: false,
                data: {
                    "_token": $('#csrf-token').content,
                    "counter": counter,
                },
                success: function(response){
                    if (response.count < 10){
                        console.info("2 if");
                        $('#seeMore').hide();
                    }
                    console.info("2 else")
                    var data = response.all_jobs;
                    append_data(data);
                    counter++;
                }
            });
        });
</script>

Контроллер:

public function getjobs(Request $request){

    $all_jobs = DB::table('jobs')->skip($request->counter*10)->take(10)->where('job_status', 1)->orderBy('id','DESC')->get();

   return response(["all_jobs" => $all_jobs, "count" => count($all_jobs)]);
}

Взгляните на laravel.com/docs/8.x/pagination#converting-results-to-json когда результатов больше нет, тогда next_page_url будет нулевым

apokryfos 14.12.2020 18:28

@apokryfos Этот метод перезагружает страницу, мне нужно загрузить данные без загрузки страницы.

Saad Masood 14.12.2020 18:31

Я связал результаты json, которые вы можете прочитать в своем ответе ajax.

apokryfos 14.12.2020 20:07

мой ответ поможет вам?

Abilogos 19.01.2021 11:13

Нет брата @Abilogos

Saad Masood 21.01.2021 13:30
Поведение ключевого слова "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) для оценки ваших знаний,...
1
5
283
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

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

как @apokryfos предположил, что laravel имеет встроенную функцию (paginate), чтобы позаботиться об этом.

но, как я вижу, вы отправляете все свои записи всего за один запрос и считаете, что это совсем не хорошая практика.

Исправить

вы написали:

if (response.count < 10)

который заботится об элементах 0-9, если вы хотите скрыть 10 элементов, вы можете:

if (response.count =< 10)

бит, это будет настоящая разбивка на страницы, если вы отправляете фрагменты данных. с такими атрибутами, как total,page_number,...

это может быть просто с использованием laravel paginate:

return DB::table('jobs')->where('job_status',1)->orderBy('id','DESC')->paginate();

он получает номер страницы из запроса

как предложил Laravel Document, вы можете просто взять URL-адрес следующей страницы из next_page_url и изменить следующую кнопку:

$("#seeMore").attr("href",next_page_url);

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