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 代码中