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()
});
Другие вопросы по тегам