Содержимое JQuery из цикла добавляется последним
В основном мне нужно добавить заголовок, содержание и сообщение нижнего колонтитула.
Контент поступает из цикла и по какой-то причине добавляется последним.
function sendMail(){
$("#textareaContainer").append('<textarea id="someTextarea" rows=12 class="span7">Some header text that is needed</textarea>');
for (var i=0;i<idToUse.length;i++){
$.post("actions.php", "do=contentFromPhp"+"&id="+idToUse[i],0,"json").done(function(result) {
for (var i=0;i<result.length;i++){
$("#someTextarea").append("\r"+result[i].theContent);
}
idToUse = [];
});
}
$("#someTextarea").append("\rSome footer text that is needed!");
}
Токовый выход:
Some header text that is needed
Some footer text that is needed!
Content From loop 1
Content From loop 2
Мне нужно, чтобы это было:
Some header text that is needed
Content From loop 1
Content From loop 2
Some footer text that is needed!
2 ответа
Это потому, что вы используете AJAX для заполнения данных, Примечание: даже это может не дать точного результата, так как запросы AJAX могут возвращаться в другом порядке
function sendMail(){
$("#textareaContainer").append('<textarea id="someTextarea" rows=12 class="span7">Some header text that is needed</textarea>');
var xhrs = [], xhr;
for (var i=0;i<idToUse.length;i++){
xhr = $.post("actions.php", "do=contentFromPhp"+"&id="+idToUse[i],0,"json").done(function(result) {
for (var i=0;i<result.length;i++){
$("#someTextarea").append("\r"+result[i].theContent);
}
idToUse = [];
});
xhrs.push(xhr)
}
$.when.apply($, xhrs).then(function(){
$("#someTextarea").append("\rSome footer text that is needed!");
})
}
Вам необходимо добавить нижний колонтитул в функцию обратного вызова AJAX:
for (var i=0;i<idToUse.length;i++){
$.post("actions.php", {
do: "contentFromPhp",
id: idToUse[i]
}, 0, "json").done(function(result) {
for (var i=0;i<result.length;i++){
$("#someTextarea").append("\r"+result[i].theContent);
}
$("#someTextarea").append("\rSome footer text that is needed!");
idToUse = [];
});
}
Я также изменил ваши данные из строки в объект, чтобы jQuery правильно кодировал их по URL.