AJAX завершить функцию вызова после того, как DOM готов
Мне нужно сделать запрос AJAX, а затем обработать некоторые данные, возвращаемые с сервера. Я хотел бы сделать этот запрос раньше, чем документ готов. Но я смогу обрабатывать данные только после того, как документ будет готов. У меня есть идея сделать что-то вроде этого:
$.when($(document).ready(),
$.ajax(/*some request*/)).done(function(){//processing data from the server});
Как это будет работать? или есть ли другие варианты, чтобы получить результат, который я хочу
3 ответа
Попробуйте использовать: $( document).ajaxComplete(function() {}
Нет, это не сработает, так как $(document).ready()
не возвращает обещание. Вы можете однако сделать
var request = $.ajax(/*some request*/);
$(document).ready(function() {
request.done(function(){
//processing data from the server
});
});
Без использования асинхронных вспомогательных библиотек, вы можете использовать некоторые флаги и вспомогательную функцию, не самую элегантную, но она работает
var docReady = false;
var responseReady = false;
var tryEvaluateResponse = function() {
if(docReady && responseReady) {/*processing data from the server*/}
};
$(document).ready(function() {
docReady = true;
tryEvaluateResponse();
});
$.ajax(/*some request*/)).done(function() {
responseReady = true;
tryEvaluateResponse()
});