【问题标题】:jquery ajax while loop in odd orderjquery ajax while循环以奇数顺序
【发布时间】: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


【解决方案1】:

AJAX 以异步方式工作,不一定是您发送的第一个请求会先返回数据,这就是问题所在。在 while 循环中执行 AJAX 调用并不是最好的解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-03
    • 2010-11-09
    • 2016-08-10
    • 1970-01-01
    • 2017-12-04
    • 2022-06-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多