for 循环里调用ajax,一个for循环内的Ajax一次执行

博客讨论了如何在for循环内正确调用AJAX以确保按顺序执行。提出了使用递归函数和全局变量控制的方法,通过在每个AJAX成功回调中触发下一次请求,确保所有请求按顺序完成。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

5 个答案:

答案 0 :(得分:1)

在函数中执行此操作,并在2 ajax调用成功时再次调用该函数。同时为当前玩家计数设置一个全局变量,现在在循环中。

var players = '<?php echo $players ?>';

var global_current_player = 0;

function doAjax(current_player) {

$.ajax({

type: "POST",

url: "url...",

data: { currentplayer: current_player, players: players },

dataType: 'json',

cache: false,

timeout:60000,

success: function(output){

$.ajax({

type: "POST",

url: "url...",

data: { currentplayer: current_player, players: players },

dataType: 'json',

cache: false,

timeout:60000,

success: function(output){

global_current_player++;

if (global_current_player < 2) {

doAjax(global_current_player);

}

}

});

}

});

}

doAjax(global_current_player);

所以这个函数是递归的,只能在条件global_current_player < 2之前工作

PS:我没有执行该功能,但这个逻辑应该可以工作。

答案 1 :(得分:0)

试试这个。我使用True或False标志'prevAjaxCmpltd'来控制AJAX请求的执行。

var players = '<?php echo $players ?>';

var i =0;

var prevAjaxCmpltd = True;

while (i < 2)

{

if(prevAjaxCmpltd){

i++;

prevAjaxCmpltd = False;

$.ajax({

type: "POST",

url: "url...",

data: { currentplayer: i, players: players },

dataType: 'json',

cache: false,

timeout:60000,

success: function(output){

$.ajax({

type: "POST",

url: "url...",

data: { currentplayer: i, players: players },

dataType: 'json',

cache: false,

timeout:60000,

success: function(output){

prevAjaxCmpltd = True;

}

});

}

});

}

}

答案 2 :(得分:0)

为了解决上述问题,尝试在第一个ajax成功函数中获取条件,并将第二个ajax代码放在网站成功函数中。

答案 3 :(得分:0)

你可以使用递归:

function sync(i) {

if (i < 2) {

$.ajax({...,

success: function(options) {

...

$.ajax({...,

success: function(options) {

...

sync(i+1);

}

});

}

});

}

}

sync(0);

答案 4 :(得分:0)

而不是for循环,您可以使用while循环并仅在ajax调用返回成功(或错误)时递增它

尝试:

var i =0;

execute = True

while(i<2){

if(execute){

execute = False

$.ajax({

.. your ajax code ...

success:function(){

execute = True

i++

}

error:function(){

execute = True

i++

}

})

}

}

这样,只有当ajax返回某些内容时,你的while循环才会递增。在那之前,它会继续运行i之前的值,并且由于execute为False,ajax只会命中一次

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值