【发布时间】:2018-05-18 02:16:53
【问题描述】:
我无法理解我在这个问题上做错了什么。我有一个 while 循环运行 AJAX 函数,以从 PHP 文件中获取从下拉列表中选择的人数的数据。
$(document).on('change', '#attendingCount', function() {
$(".person-container").html("");
var amount = $(this).val();
var i = 0;
while (i < amount) {
getPerson(i);
i++;
}
});
getPerson(0);
function getPerson(e) {
$.ajax({
type: 'post',
url: './person.php',
data: {
"amount": e
},
success: function(data) {
$(".person-container").append(data);
},
error: function() {
console.log('error');
}
});
}
当结果被抽出时,它们的顺序是完全随机的。 我到底做错了什么?!
【问题讨论】:
-
AJAX 是.....等待它....异步!无法保证您会按照请求的顺序收到回复。
-
我不会使用 AJAX 调用来获取每个人。相反,返回一个包含您想要的用户数量的 JSON 数组,然后将它们加载到您的容器中。
-
您并没有做任何本质上的错误,问题是因为 AJAX 调用是异步的。这意味着虽然您可以按顺序发送请求,但它们可能会以完全不同的方式返回,具体取决于传输数据所需的时间、服务器处理每个请求所需的时间以及传输响应所需的时间.如果您必须按顺序接收请求,则需要将它们一个接一个地链接起来。更好的是,在一个请求中发送所有数据。
-
使用循环构建一个你想要返回的人的数组,然后将它发送到服务器并让它返回一个你可以附加到你的容器的有序列表。
标签: javascript php jquery ajax while-loop