由于 AJAX 的异步特性,当您的 success 函数针对任何生成的 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
或类似的东西。
此外,使用元素的 ID 比使用元素标签名称作为哈希选择器前缀要快得多。另外,您应该避免每次成功运行时都重新查询 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);
}