2015-02-11 2 views
0

Я создаю плагин WordPress AJAX, который вытягивает счетчик Like для пользователя с разных сайтов социальных сетей. Плагин использует один запрос JQuery AJAX для первоначального запроса на все сайты социальных сетей.Лучшее время DOM для запуска запроса JQuery AJAX?

Первоначальный звонок на все сайты социальных сетей может быть довольно медленным. После начального вызова (-ов) счетчики Like кэшируются в базе данных WordPress.

Я создаю пользовательскую функцию jQuery, чтобы сделать запрос AJAX, и мне интересно, что является лучшим событием для привязки функции AJAX.

.ready

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

или .load

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

Если это делается при загрузке, сделайте это как можно раньше на жизненном цикле страницы, т.е. 'document.ready', поскольку' window.load' не срабатывает, пока все на странице не будет готово и просто добавит задержку. –

+1

'jQuery ajax' является асинхронным, поэтому он не будет влиять на загрузку остальной части страницы, поэтому вы можете запустить его как можно раньше (' $ (document) .ready') –

+1

Спасибо, ребята, комментарии имеют смысл. Будет работать при загрузке. – Jason

ответ

1

Здесь почтительность между нагрузкой и готов:
готов: выполняется, когда HTML-документ загружен и DOM готов
нагрузка: выполняется после завершения полной загрузки страницы, включая все кадры, объекты

Update:
Как сказано в комментариях @rnevius вы можете запустить запрос без какого-либо события DOM, так что вы можете выполнить запрос при загрузке скрипта.

Так самое раннее, насколько это возможно, чтобы сделать это на ready

+0

Спасибо @ vlio20. Ответил мой вопрос отлично – Jason

+0

Было бы здорово, если вы примете ответ :) – vlio20

+1

Этот ответ неверный. Вы можете сделать запрос AJAX * до * 'ready'. DOM не нужно загружать. – rnevius

1

Вы не отвечают ждать готовы на самом деле, который приходит, прежде чем нагрузки, просто положить его в голове HTML после JQuery загружается синхронно. Если вы хотите, чтобы все async, включая загрузку jquery, вы должны были разместить его в готовности. Вот статья, есть и еще много таких, как этот. http://encosia.com/dont-let-jquerys-document-ready-slow-you-down/

1

Вам не нужно ждать, пока не будут выполнены события готовности или загрузки для отправки вашего вызова ajax. Фактически, вы получите результат ajax быстрее, если не дождаться. Вам нужно дождаться, когда DOM будет готов, прежде чем вы сможете поместить результат на страницу.

Таким образом, самый быстрый способ увидеть результат - немедленно запустить вызов 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 
    }); 
})(); 
0

Обычно мы используем готовые согласно причине, указанной на vlio20, но у вас есть возможность использовать нагрузки тоже. Фактически это зависит от требования, так как загрузка ожидает загрузки всех элементов, поэтому мы предпочитаем готово.

Смежные вопросы