1

まず、動画の 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
});

助けてくれてありがとう。

4

2 に答える 2

0

この$.getJSON()関数は、データ型が に設定された関数の単なるショートカットです。jQuery.ajax() 関数のドキュメントを見ると、デフォルトで非同期に設定されていることがわかります。これは、いつでも発生する可能性があり、指定された順序ではない可能性があることを意味します。と をストレートに実行することで問題を解決できます。$.ajax()jsonjQuery.ajax()async: falsedataType: 'json'

于 2013-05-22T03:34:56.103 に答える
0

each ループ内で ajax 呼び出しを行っているためです。したがって、すべてのリクエストはほぼ同時に行われます。また、各 ajax 呼び出しの応答時間に応じて、値がコンテナーに追加されます。したがって、誰の応答が最初に来るかが最初に追加されます。そのため、順序は常に異なります。

毎回同じ注文が必要な場合は、すべての ajax リクエストをキューに入れます。これは、すべての ajax リクエストをキューに入れておくのに役立つ場合があります。3 番目の例「Ajax 呼び出しのようなものをキューに入れる」を参照してください http://learn.jquery.com/effects/uses-of-queue-and-dequeue/

于 2013-05-22T03:26:32.790 に答える