【问题标题】:Best DOM time to run jQuery AJAX request?运行 jQuery AJAX 请求的最佳 DOM 时间?
【发布时间】:2015-02-11 16:20:51
【问题描述】:

我正在构建一个 WordPress AJAX 插件,该插件可以从各种社交媒体网站为用户提取点赞数。该插件最初使用一个 jQuery AJAX 请求向所有社交媒体网站发出请求。

对所有不同社交媒体网站的初始调用可能非常缓慢。在初始调用之后,Like 计数被缓存在 WordPress 数据库中。

我正在构建一个自定义 jQuery 函数来发出 AJAX 请求,并且想知道将 AJAX 函数绑定到的最佳事件是什么。

.ready

$(document).ready(function() {
    // code here
});

.load

$(window).load(function() {
    // code here
});

【问题讨论】:

  • 如果它是在加载时完成的,请在页面生命周期中尽早完成,即。 document.ready as window.load 在页面中的所有内容都准备好并且只是增加延迟之前不会触发。
  • jQuery ajax是异步的,所以不会影响页面其余部分的加载,所以还是尽早启动吧($(document).ready
  • 谢谢各位,你们的两个 cmets 都非常有意义。将在加载时运行它。
  • 你可以在之前 .ready()触发...为什么要等待?
  • 你真的应该立即启动 ajax 调用,并在 DOM 准备好时处理结果。这将使您的结果以最快的速度进入页面。无需等待启动 Ajax 调用。

标签: jquery ajax events


【解决方案1】:

这里是 load 和 ready 之间的区别:
ready: 在 HTML-Document 被加载并且 DOM 就绪时执行
load: 在完成时执行页面已完全加载,包括所有框架、对象

更新:
正如@rnevius 在 cmets 中所说,您可以在没有任何 DOM 事件的情况下运行请求,因此您可以在脚本加载时执行请求。

所以尽早在ready上做这个

【讨论】:

  • 谢谢@vlio20。完美回答了我的问题
  • 这个答案不正确。您可以在 之前 ready 发出 AJAX 请求。不需要加载 DOM。
  • @mevius - 我同意。启动 ajax 调用的最早时间是在准备好之前。
【解决方案2】:

其实你不用等待load之前的ready,只需在jquery同步加载后放在html的头部即可。如果你想要一切异步,包括加载 jquery,那么你必须把它准备好。 这是一篇文章,还有更多类似的文章。 http://encosia.com/dont-let-jquerys-document-ready-slow-you-down/

【讨论】:

    【解决方案3】:

    您无需等到就绪或加载事件发生后即可发送您的 ajax 调用。事实上,如果你不等待,你会更快地得到你的 ajax 结果。您需要等待的是 DOM 准备就绪,然后才能将结果放入页面中。

    因此,查看结果的最快方法是立即(从 head 部分)启动 ajax 调用,然后在 .ready() 或当 ajax 调用完成时(以最后一个为准),然后将结果放入你的页面。

    您可以在 <head> 部分中这样做,但在加载 jQuery 之后:

    (function() {
        // set up a deferred for when the document is ready
        var docready = $.Deferred();
        $(document).ready(docready.resolve);
    
        // kick off your ajax call
        var p = $.ajax(...);
    
        $.when(p, docready).then(function(data) {
            // data[0] is your ajax result
            // and your page is ready to be modified
        });
    })();
    

    【讨论】:

      【解决方案4】:

      通常我们根据 vlio20 给出的原因使用 ready,但您也可以选择使用 load。 它实际上取决于要求,因为加载等待所有元素加载,因此我们更喜欢准备好。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-01-23
        • 1970-01-01
        • 2015-04-07
        • 1970-01-01
        • 2012-05-10
        • 2012-04-22
        相关资源
        最近更新 更多