#jquery #document-ready
#jquery #документ готов
Вопрос:
Я запускаю $.get()
вызов, как только выполняется JS, это происходит до $(document).ready()
запуска. Как я могу использовать результат $.get
сразу после $(document).ready()
запуска? Я не хочу отправлять $.get()
сообщение после $(document).ready()
запуска.
Решение: Как упоминал Джонатан Джулиан, я наткнулся на это решение:
$.get('my_script.php', function(data) {
$(document).ready(function() {
// I can use data here as soon as document is available!
// No flickering of the updated div! :)
});
});
Ответ №1:
страница будет отображать и запускать документ, готовый, как только сможет, вы не можете отложить это, и у вас не будет причин, независимо от того, что вы думаете, что есть лучший способ сделать это
Комментарии:
1. Мой $.get вызывается до готовности документа! Я не хочу откладывать document.ready, но я хочу подключить к нему уже подготовленный результат из $.get .
2. да, но поскольку он асинхронный, у вас нет гарантии, когда он завершится. Я не уверен, что вы получаете,
get()
но что бы это ни было, оно должно быть отправлено при первой загрузке страницы, я понятия не имею, зачем вам нужно выполнить 2 http-запроса, прежде чем страница будет готова..3. Возможно, данные недоступны во время рендеринга страницы. В подходе @powtac нет ничего плохого.
4. допустим, ради аргумента, что эти данные каким-то образом были доступны только после того, как был сделан первый http-запрос, я все еще не понимаю, зачем вам нужно откладывать подготовку документа, он будет готов, когда он будет готов, конечно, какими бы ни были данные, вы можете вставить их в DOM в любом случае, если хотитекак
5. $.get запускается намного раньше, чем document.ready , и обычно результат возвращается также до document.ready .
Ответ №2:
В вашем success
обработчике сделайте то, что вам нужно сделать в $(document).ready()
функции. Он либо запустится сразу, либо подождет, пока документ не будет готов.
Ответ №3:
Определите переменную в глобальной области видимости и используйте для хранения значения из get(). Вы можете использовать его позже в любом месте в любое время.
Комментарии:
1. Трудно определить «позже» в такой вещи, управляемой событиями, как браузер. Доступ к этой переменной может быть получен до завершения запроса ajax.