Javascript ajax加载所有DOM元素后如何加载函数

Javascript ajax加载所有DOM元素后如何加载函数,javascript,jquery,Javascript,Jquery,我有一个函数的问题,应该在所有内容准备好后加载。 我有一个巨大的ajax调用1700行代码 我的代码是如何工作的:php文件从数据库中的3个表中获取数据并将其转换为JSON。我打开JSON文件并为1个数据库结果创建1个元素 现在,我有大约100个结果,但在最后一步,我将有大约1000个。因此,我创建加载,以便在加载页面之前放置。但由于主要内容是由js创建的,有时我的加载会在加载内容前1-2秒消失。我可以使用js或jquery。现在,我用的是这样的东西: $(window).on ('load',

我有一个函数的问题,应该在所有内容准备好后加载。 我有一个巨大的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)});

一旦通过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.log(res);
                    }
                });


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

希望这能有所帮助。

你到底在等什么?window.onload本质上你正在做的事情在页面加载后会触发-如果你想等待窗口加载,为什么你需要等待更长的时间?你可以这样做,但是。。。在测试页面时,加载会在ajax创建dom元素之前隐藏,因此有1秒的时间我们有空页面哦,所以您在等待ajax完成-您在问题代码中没有显示任何ajax。。。ajax通常有一个成功的回调-做你需要做的事情,你通常。。。我正在使用ajax读取文件。。。因此,我的代码看起来非常类似var xhttp=newxmlhttprequest;xhttp.onreadystatechange=函数{如果this.readyState==4&&this.status==200{我的代码在这里};xhttp.openGET,somefile.php,true;xhttp.send;}在问题a有意义,b有可读性的地方,请把你的答案格式化,并给出更好的解释。这对我一点帮助都没有。你只需改变暂停时间。你们需要知道,未来的一切都取决于用户的互联网连接。它将帮助其他有类似问题的人。但我不确定在我的ajax代码上使用什么:var xhttp=new XMLHttpRequest;xhttp.onreadystatechange=函数{如果this.readyState==4&&this.status==200{我的代码在这里};xhttp.openGET,ajax_file.php,true;xhttp.send;}在我这里的代码中使用它-注意,您将问题标记为jquery,因此很自然地假设您使用jquery ajax-这就是为什么在我知道的问题中发布与您的问题相关的代码很重要。但我不知道我需要在ajax调用中加入这种函数。。。那么我可以把它放在xmlhttp.send之后吗?
$(window).ready(function (){
   setTimeout(function(){ $("#loading").fadeOut('slow'); }, 3000);
});