Как загрузить функцию после того, как ajax загрузит все элементы DOM

У меня проблема с функцией, которую нужно загрузить после того, как весь контент будет готов. У меня есть массивный вызов ajax на 1700 строк кода.

Файл Как работает мой код: php получает данные из 3 таблиц в моей базе данных и конвертирует их в JSON. Я открываю файл JSON и создаю 1 элемент для 1 результата базы данных.

На данный момент у меня около 100 результатов, но на последнем этапе будет около 1000. Итак, я создаю загрузку, чтобы поместить ее перед загрузкой страницы. Но поскольку основной контент создается js, иногда моя загрузка исчезает за 1-2 секунды до загрузки контента. Я могу использовать js или jquery. Пока что я использовал что-то вроде этого:

$(window).on ('load', function (){
     setTimeout(function (){
     $("#loading").fadeOut('slow');}, 1000)});

чего именно вы ждете? window.onload (по сути то, что вы делаете) срабатывает после загрузки страницы - зачем вам ждать дольше, если вы хотите дождаться загрузки окна?

Jaromanda X 08.09.2018 08:00

Да, можно, но ... несколько раз, когда страница была протестирована, загрузка скрывается до того, как ajax создаст элементы dom, поэтому в течение 1 секунды у нас была пустая страница

Piotr 08.09.2018 08:02

о, так что вы ждете завершения AJAX - вы не ПОКАЗЫВАете никакого ajax в коде вопроса ... ajax обычно имеет обратный вызов успеха - делайте то, что вам нужно в этом

Jaromanda X 08.09.2018 08:03

Да, обычно ... Я использую ajax для чтения файла ... так что мой код выглядит очень похожим var xhttp = new XMLHttpRequest (); xhttp.onreadystatechange = function () {if (this.readyState == 4 && this.status == 200) {здесь мой код}}; xhttp.open ("ПОЛУЧИТЬ", "somefile.php", истина); xhttp.send (); }

Piotr 08.09.2018 08:09

как насчет того, чтобы показать, что в вопросе, где это а) имеет смысл и б) читается

Jaromanda X 08.09.2018 08:25
Поведение ключевого слова "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
5
616
2

Ответы 2

Выполните функцию, как только вы получили данные через AJAX. Проверьте фрагмент кода ниже

            $.ajax({
                    url: '/URL/TO/CODE',
                    headers: {
                        'X-CSRF-TOKEN': $('meta[name = "csrf-token"]').attr('content') //This is optional if you are using x-csrf-token validation of if u want to pass any header data
                    },
                    type: "post",
                    data: {
                        data:data //In case if you need to pass any data
                    },
                    dataType: 'json',
                    cache: false,
                    before:function(){
                        //Is you want to show any loader or anything while ajax is being executed.
                    },
                    success: function (response) {
                       //Once your ajax  is success you can call your custom function to do things with the data
                     myCustomFunction();
                    },
                    error: function (res) {
                        console.info(res);
                    }
                });


       function myCustomFunction(){
          //This to be executed when all data are filled by ajax and page is loaded
       }

Надеюсь это поможет.

Да, это поможет другим с подобной проблемой. но я не уверен, где использовать в моем коде ajax: var xhttp = new XMLHttpRequest (); xhttp.onreadystatechange = function () {if (this.readyState == 4 && this.status == 200) {Здесь мой код}}; xhttp.open ("ПОЛУЧИТЬ", "ajax_file.php", истина); xhttp.send (); }

Piotr 08.09.2018 08:17

используйте его в My code goes here - обратите внимание, вы пометили свой вопрос jquery, поэтому для предполагать естественно использовать jquery ajax - поэтому важно опубликовать код, который имеет отношение к вашему вопросу в вопросе

Jaromanda X 08.09.2018 08:23

Я знаю. Но я не знал, что мне нужно будет поместить такую ​​функцию внутри вызова ajax ... так что могу я поставить ее после xmlhttp.send (); ?

Piotr 08.09.2018 08:32
$(window).ready(function (){
   setTimeout(function(){ $("#loading").fadeOut('slow'); }, 3000);
});

Пожалуйста, отформатируйте свой ответ и дайте более подробное объяснение.

KaiserKatze 08.09.2018 08:11

Этот мне совершенно не поможет. Вы просто меняете тайм-аут. На будущее нужно знать, что все зависит от подключения пользователя к Интернету.

Piotr 08.09.2018 08:20

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