Прошу помощи связывании в последовательном связывании ajax запросов.(пример ниже работает некорректно). Правильная последовательность 1-2-3-4.
HTML:
<div id="1" data-loader="../components/header.html"></div>
<div id="2" data-loader="../components/navigation.html"></div>
<div id="3" data-loader="../components/body.html"></div>
<div id="4" data-loader="../components/footer.html"></div>
JS:
<script>
var url;
var id;
var j=1;
$(document).ready(function () {
$('div[data-loader]').each(function() {
url=$(this).attr("data-loader");
id=$(this).attr("id");
$.get(url, function(data){
$('#'+j).html(data);
j++;
});
});
});
Проблема в том, что код внутри $.get будет выполнятся после всех each. Т.к. неизвестно заранее в каком порядке придут ответы то невозможно заранее предугадать значение j в каждом запросе.
Для того чтоб было последовательное выставление $('#'+1), $('#'+2), $('#'+3), нужно сохранить значение j где нить в локальном замыкании внутри each (чтобы каждый вызов each сохранял свой j).
Так должно работать:
var url;
var id;
var j=1;
$(document).ready(function () {
$('div[data-loader]').each(function() {
url=$(this).attr("data-loader");
id=$(this).attr("id");
var tmp_j = j++;
$.get(url, function(data){
$('#'+tmp_j).html(data);
});
});
});
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости