javascript - 通过 JavaScript 循环加载的项目未按正确顺序显示

标签 javascript jquery

我有以下代码,应该在页面加载时显示 3 个产品:

for(i=0;i<3;i++) {
    document.forms['search_info'].elements['page'].value = i+',1,'+(i+1);
    var jsonData = $('#search_info').serializeArray();
    var page = document.forms['search_info'].elements['page'].value.split(',');
    var limitData = {'name':'limit','value': page[0]+','+page[1]};
    jsonData.push(viewData);
    jsonData.push(limitData);
    $.ajax({
        type: "GET",
        dataType: "json",
        url: 'index.php',
        cache: false,
        data: jsonData,

        success: function(data) {
            var text = data.output;
            var el = $('#scroller');
            el.append('<li>' + text + '</li>').hide().fadeIn(450);
        }
    });
}

它确实完成了工作,唯一的问题是产品的顺序;每次我重新加载页面时,项目都会以随机顺序出现。

知道为什么会发生这种情况吗?我该如何解决这个问题?

最佳答案

这些调用是异步发生的,并且实际上是同时开始的。每次完成的顺序可能不同。

通过将 async: false 添加到您的代码中,它应该可以工作:

       $.ajax({
            type: "GET",
            dataType: "json",
            url: 'index.php',
            cache: false,
            data: jsonData,
            async: false

另请参阅此处的相关文档:http://api.jquery.com/jQuery.ajax/

关于javascript - 通过 JavaScript 循环加载的项目未按正确顺序显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8260089/

相关文章:

javascript - 是否有关于如何创建准备与 javascript 一起使用的漂亮 HTML 的指南?

javascript - 如何使用 javascript 从第二个 <tr> 标记获取文本值

javascript - 确保 javascript 徽章/小部件 html 未更改

php - 如何通过 HTML 将 jQuery Ajax 调用与 PHP 给出的动态参数绑定(bind)

javascript - React 中的多个状态变化

javascript - select2 - 如何使用 jQuery 将值更改为列表的第一个选项?

javascript - 单击使用 AJAX 加载的 div 的选择器 - jQuery

jquery - 将 <li> 项的范围包装在一个 div 容器中

javascript - 我们可以在 formik YupValidationSchema 中添加自定义验证吗?

javascript - 处理 Async Await 以将 Firebase 与 React Native 结合使用