当前位置: 首页 > 面试题库 >

如何使多个ajax请求在循环中顺序返回值?

慕阳文
2023-03-14
问题内容

我必须在循环上进行一系列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来完成。请帮帮我。


问题答案:

您可以使用占位符。

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

            var $placeholder = $('<div>').appendTo("div.content");

            $.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/>';

                $placeholder.replaceWith(markup);
            }

        });
});


 类似资料:
  • 我有一个循环,在一次迭代中,我需要发出四个AJAX请求,然后等待最后一个请求的结果。 jQuery延迟-获取链接ajax调用的结果 将jquery.when().then()链接在具有固定链端调用的循环中 如何使for循环等到异步调用成功后再继续 现在,我只知道如何将数据从先前的promise传递给另一个promise(就像这个很酷的答案),但我需要将上次AJAX调用的值返回到外部数组(并等待上次

  • 问题内容: 我有一个函数,用关键字声明一个变量。然后,它将启动AJAX请求以设置变量的值,然后从函数中返回此变量。 但是,我的实现失败了,我也不知道为什么。 这是代码的简化版本; 问题答案: AJAX请求是异步的。您的sendRuest函数正在执行,正在发出AJAX请求,但它是异步发生的;因此,sendRuest的其余部分在AJAX请求(和onreadystatechange处理程序)执行之前就已

  • 问题内容: 我想知道为什么当我这样依次调用request.get()方法时: 我对所有请求的状态都良好,但是当我在for循环中执行该状态时,例如: 除最后一个请求外,所有请求我都得到400(错误)。 附加信息:SO上有一个相关的问题,其中提到了两种应对这种情况的方法:等待,标题。 在我的情况下 以及标题中,wait不起作用-我不知道在那里提供了什么。 更新:我正在尝试实现的特定版本: 问题答案:

  • 我正在尝试使用FastAPI MongoDB创建一个API,它可以从请求中返回多个值。MongoDB充满了数据,使用mongoengine,我可以在向特定endpoint发送请求时查阅一个或所有数据。我现在要做的是从endpoint接收一个或多个数据,例如: 当查询endpoint< code > http://127 . 0 . 0 . 1:8000/rice 时,我得到一个JSON响应,其中包

  • 问题内容: 我正在遍历几个项目,并为每个项目提出ajax请求(使用jQuery)。我希望它们独立执行,但要以它们被调用的顺序而不是它们返回的顺序填充到DOM中(由于某些原因,某些请求比其他请求花费的时间更长)。有关此类事情的最佳做法的任何技巧? 问题答案: 最终的答案是一个名为ajaxManager的jQuery插件。这正是我需要的: https://github.com/aFarkas/Ajax

  • 如果url正确,我在调试导航器中看不到任何队列,因为它没有再次调用方法。我在networking库中引用了相同的内容,但我想它的工作方式与我在NSURLSession中的工作方式相同,对吗? 案例:-我检查url是否存在,所以如果存在,就加载两个url(time.txt和image.png),否则调用WebService(XmlParser)&保留以下文件的url检查。 显示哪个存在。