В связи с асинхронной природой AJAX, к тому времени, когда ваша функция успеха выполняется для любого из результирующих запросов AJAX, цикл завершен и для initval
установлено значение 5. Вам необходимо зафиксировать состояние initval
вначало каждого запроса и использовать это захваченное состояние в методе success()
.Закрытие по значению - это самый простой способ сделать это:
function action() {
var initval = 1;
var endval = 5;
do {
var action_string = 'txtuser=someone';
( function( captured_initval ){
$.ajax({
type: "POST",
url: "http://localhost/js.php",
data: action_string,
success: function(result){
$('div#append_result').append(captured_initval + ',<br/>');
}
});
}( initval ) );
initval++;
} while (initval <= endval);
}
Однако следует понимать, что один или несколько запросов могут зависнуть на сервере, что позволяет последнему завершить первый запрос, что может привести к 1, 2, 5, 3, 4
или что-то в этом роде.
Кроме того, использование идентификатора элемента намного быстрее, чем добавление префикса хэша к имени тега elements.Кроме того, вы должны избегать повторного запроса DOM для вашего результата DIV при каждом успешном запуске.Возьмите его один раз и используйте при необходимости:
function action() {
var initval = 1;
var endval = 5;
do {
var action_string = 'txtuser=someone',
$AppendResult = $('#append_result');
( function( captured_initval ){
$.ajax({
type: "POST",
url: "http://localhost/js.php",
data: action_string,
success: function(result){
$AppendResult.append(captured_initval + ',<br/>');
}
});
}( initval ) );
initval++;
} while (initval <= endval);
}