У меня есть 2 JAVASCRIPT API Получить вызовы, которые я делаю с помощью JQUERY. Я хочу добавить HTML, который я создаю во втором вызове DOM.вернуть данные из вложенного jquery ajax получить запрос
Первый вызов захватывает некоторые данные. Я просматриваю длину этих данных, делая второй вызов для каждого индекса.
В течение второго вызова я создаю HTMLContent вверх.
Как только все вызовы завершены, я добавляю HTMLContent в DOM.
Я пытаюсь вернуть HTMContent обратно в течение первого вызова, так как я хочу только добавить DOM, когда он полностью создан. И вне цикла for
, который я создал.
Я знаю, что мог бы добавить сделанное из 2-го звонка, но мне очень хотелось бы знать, как его вернуть.
Я думал, может быть, мне нужно создать обещание, но не уверен, что это поможет, поскольку сфера будет по-прежнему содержаться на второй запрос GET .done
Func
Это то, что я до сих пор.
var gallery = (function($){
var init,
firstGetCall,
secondGetCall,
HTMLContent = '';
init = function(){
// Make first call
firstGETCall();
};
// Declare firstGETCall func
firstGETCall = function(){
$.ajax({
url: 'http://example.com/data.json',
type: 'GET',
data: {
numberOfItems: 10
}
})
.done(function(data) {
// Cycle through each data element
for (var i = 0; i < data.length; i++) {
// Make second call
secondGetCall(data[i]);
};
})
.fail(function(error) {
console.log(error);
});
// I want to append the DOM here with the conplete HTMLContent - built up of 10 x <div><img... elements
// However I'm stuck as to how to return the complete HTMLContent
};
// Declare secondGetCall func
secondGetCall = function(singleData) {
$.ajax({
url: 'http://example.com/data-2.json',
type: 'GET',
data: {
type: singleData
}
})
.done(function(data) {
// Build HTMLContent
HTMLContent = '<div><img src="' + data.image + ' title="' + data.subTitle + ' alt="Photo"></div>';
// I do not want to append the DOM here
// return HTMLContent doesn't work
})
.fail(function(error) {
console.log(error);
});
};
return {
init: init
};
})(jQuery);
gallery.init(jQuery);
Спасибо @cFreed - так звучит, что я хочу сохранить его асинхронным. Как мне изменить то, что я должен достичь? Опять же, пытаясь понять, где и как я могу добавить уведомление, чтобы сказать, когда все, что он завершит, и HTMLContent будет создан. – fidev
и в вашем ответе в пункте 1. Если я ошибаюсь, я добавляю (конкатенируя) новые данные с помощью присваивания '+ =' – fidev
@fidev Сначала отвечая на ваш последний комментарий: да, я предлагаю последовательно заполнить 'HTMLContent', добавив каждую новую часть, затем (пункт 3) использовать весь текст HTML для добавления в DOM. Что тебя озадачивает? – cFreed