gpt4 book ai didi

javascript - javascript问题时做

转载 作者:行者123 更新时间:2023-11-30 07:06:09 25 4
gpt4 key购买 nike

我试图在一个 do while 循环中发送多个帖子,但没有添加结果

<script type="text/javascript">
function action() {
var initval = 1;
var endval = 5;
do {
var action_string = 'txtuser=someone';

$.ajax({
type: "POST",
url: "http://localhost/js.php",
data: action_string,
success: function(result){
$('div#append_result').append(initval + ',<br/>');
}
});
initval++;
} while (initval <= endval);
}
</script>

输出是:5、5、5、5、5、

我需要的输出是:1、2、3、4、5、

最佳答案

由于 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 或类似的结果那个。

此外,使用元素的 ID 比在哈希选择器前加上元素标签名称要快得多。另外,您应该避免每次成功运行时都为结果 DIV 重新查询 DOM。捕获它一次并在需要时使用它:

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);
}

关于javascript - javascript问题时做,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6951191/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com