Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 为什么在添加json迭代的重复结果时,顺序会不断变化?_Jquery_Append - Fatal编程技术网

Jquery 为什么在添加json迭代的重复结果时,顺序会不断变化?

Jquery 为什么在添加json迭代的重复结果时,顺序会不断变化?,jquery,append,Jquery,Append,我首先得到一个JSON视频播放列表。然后,我获取播放列表中提供的每个视频id的JSON信息。从每个视频信息JSON中,我想在“#container”div中列出视频的缩略图url 我的问题是,每当我点击“获取JSON数据”按钮时,缩略图的顺序就会改变。我在控制台中查看,每个视频JSON总是以相同的顺序被查询,只是当我发布JSON中的信息时,它不符合顺序 有什么好处 $(document).ready(function(){ $("button").click(function(){

我首先得到一个JSON视频播放列表。然后,我获取播放列表中提供的每个视频id的JSON信息。从每个视频信息JSON中,我想在“#container”div中列出视频的缩略图url

我的问题是,每当我点击“获取JSON数据”按钮时,缩略图的顺序就会改变。我在控制台中查看,每个视频JSON总是以相同的顺序被查询,只是当我发布JSON中的信息时,它不符合顺序

有什么好处

$(document).ready(function(){
  $("button").click(function(){
    //$('p').remove();
        $.getJSON("https://api.dailymotion.com/playlist/xy4h8/videos",function(result){

            $.each(result.list, function (index, value) {
            //  console.log(value.id); 
                $.getJSON("https://api.dailymotion.com/video/"+value.id+"?fields=id,title,thumbnail_medium_url",function(resulted){
                    $("#container").append(resulted.thumbnail_medium_url + "<br />"); // THIS IS THE BIT ALWAYS OUT OF ORDER
                }); // use id of each object in list to get next json
            }); // for each of the list object within the playlist result obj

        }); // get playlist json
    }); // button click
});
$(文档).ready(函数(){
$(“按钮”)。单击(函数(){
//$('p')。删除();
$.getJSON(“https://api.dailymotion.com/playlist/xy4h8/videos,函数(结果){
$.each(result.list,函数(索引,值){
//console.log(value.id);
$.getJSON(“https://api.dailymotion.com/video/“+value.id+”?字段=id,title,缩略图\u medium\u url”,函数(结果){
$(“#容器”).append(resulted.thumbnail_medium_url+”
;//这是一个经常出错的位 });//使用列表中每个对象的id获取下一个json });//对于播放列表结果对象中的每个列表对象 });//获取播放列表json });//按钮点击 });

感谢您的帮助。

这是因为在每个循环中您都在进行ajax调用。所以所有的请求几乎同时进行。根据每个ajax调用所花费的响应时间,值会附加到容器上。因此,谁的响应将首先出现,它将首先添加。这就是为什么顺序总是不同的

如果您希望每次都使用相同的顺序,请将所有ajax请求排队。这可以帮助您将所有ajax请求保持在队列中。请参见第三个示例“对Ajax调用之类的东西进行排队”
函数是用于数据类型设置为
json
$.ajax()
函数。如果查看jQuery.ajax()函数,您将看到它在默认情况下被设置为异步,这意味着它可能在任何时候发生,并且可能不按指定的顺序。您可以通过使用
async:false
dataType:'json'

$直接执行
jQuery.ajax()
来解决此问题。getJSON
是异步的。对于
result.list
中的每个元素,您都会发送一个AJAX请求,该请求带有一个回调,该回调会在请求完成时触发,这根本没有保证顺序。