jquery - 如何让循环中的多个ajax请求按顺序返回值?

标签 jquery ajax request synchronization

我必须循环发出一系列 Ajax 请求。其中大约有100个。每个请求都会返回一个 JSONP 变量。我从 JSON 中提取数据并将值附加到 div 中。问题是我希望 div 按函数调用的顺序附加数据。即依次。现在,每次刷新页面时,我都会根据请求完成的顺序得到不同的顺序。这是我的代码。

  $.each(elem, function (index, item) {

            $.ajax({
                type: 'post' ,
                url: moviesSearchUrl + '&q=' + encodeURI(item) + '&page_limit=1',
                dataType: "jsonp",
                async: false, 
                success: searchCallback
            });

            function searchCallback(data) {
                var movies = data.movies;

                var markup = index + ': '+   movies[0].title + '<img class=" bord" src="' + movies[0].posters.thumbnail + '" /><br/>';

                $("div.content").append(markup);
            }

        });
});

当我在 div 内显示索引的值时,每次我都会收到随机订单。有时是 2 4 3 1 7,有时是 1 5 2 7 4。我什至尝试 async: false 。那没有帮助。我在某处读到 JSONP 无法使用 async: false 完成。请帮帮我。

最佳答案

不要使用 for 循环。使用递归函数:

var i = 1;

function loadNext(){
    if (i < 5){
        $.ajax({
            type: "GET",
            url: "results/result_html.php?usn="+i+"&resultType="+resultType,
            dataType:"JSON",
            success:function(result){
                finalResult+=result;
                result=result+htmlMessage;
                $("#info").hide();
                $("#result").html(result);              
                $("#usn").attr("placeholder", "Class USN");
                loadNext();
            }
        });
        i++;
    }
}

关于jquery - 如何让循环中的多个ajax请求按顺序返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10098890/

相关文章:

jquery - 从 Flask 返回字典列表到 Ajax/Jquery

javascript - 如何访问 <a> 元素中的子元素

javascript - 为什么跨域 AJAX 请求标记为 "security risk"?

javascript - 如何检查 isset 是否未设置?

javascript - 如何为 Gmail、Hotmail 等电子邮件阅读器创建预览模式

javascript - 通过多个链接在模态叠加中传递值

javascript - $.ajax 对比 $.post 对比 $.get 对比 $.load

javascript - Google 如何在搜索引擎结果页面上呈现其结果

java - 在本地服务器 : Java 上解析来自浏览器的 HTTP 请求

android - 如何发送带有 get 属性的 http 请求?