使用javascript循环php无法获得正确的结果顺序

时间:2013-08-08 06:15:31

标签: php javascript jquery

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请求,但你可以建议

我如何以循环的方式得到结果顺序。

提前感谢

抱歉我的语言。

3 个答案:

答案 0 :(得分: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(...)
}

答案 1 :(得分:0)

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

答案 2 :(得分:0)

可能会解决问题

 async   : false,
你的ajax代码中的