带有javascript的循环php无法获得正确的结果顺序


Loop php with javascript cannot get the right order of result

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 请求,但你能建议吗

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

提前致谢

对不起我的语言。

看起来 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(...)
}

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

愿它会解决问题

 async   : false,

在你的 Ajax 代码中