0
for(var i=0; i<participantNum; i++){
    studentID = $('#txtID'+(i+1)).val();
    alert(studentID);
    //my php function call it's work normally request(php,paramiter,cb)
    request("http://localhost/lastOrientation/2_registerValidate.php","studentID="+studentID,validateID);
}

我通过for循环和CALL php脚本从每个文本框中获取值以验证学生ID

但是结果是随机出现的,它不是按从 for 循环递增的顺序排列的

,顺便说一句,所有结果都出来了。我知道这是因为 ajax 请求,但你能建议

我如何以 for 循环的方式获取结果顺序。

预先感谢

对不起我的语言。

4

3 回答 3

2

看起来该request方法正在执行 ajax 请求来服务请求,如果是,则 ajax 请求本质上是异步的,这意味着您无法预测回调何时执行或哪个请求将很快完成。它取决于网络速度以及服务请求的服务器速度。

一个可能的解决方案是将请求排队,例如

function x(i, limit){
    if(i >= limit){
        return;
    }
    studentID = $('#txtID'+(i+1)).val();
    alert(studentID);
    //my php function call it's work normally request(php,paramiter,cb)
    request("http://localhost/lastOrientation/2_registerValidate.php","studentID="+studentID,validateID).complete(function(){
        x(i + 1, participantNum)
    });
}

x(0, participantNum);

function request(){
    return $.ajax(...)
}
于 2013-08-08T06:26:26.720 回答
0

愿它能解决问题

 async   : false,

在你的 ajax 代码中

于 2013-08-08T06:23:55.553 回答
0

这可能是因为您对服务器的请求之间存在延迟。当第一个请求开始时,它可能需要比第二个更长的时间,并且仅在第二个、第三个或其他请求返回后才返回结果。如果您真的想保留订单,您应该保留一些记录,记录哪个请求在返回结果时是哪个请求,或者您应该使您的请求同步(我不推荐后一种选择)。

于 2013-08-08T06:19:28.347 回答