0

コンマで区切られたビデオ ID の文字列を処理する関数を使用して、Youtube ビデオのサムネイルなどを取得しています。

function videoIDs(){
var videoArray = $("#comma-delimited-IDs").val().split(",");
var defArray = $.map(videoArray, function (videoIDs) {
var requestURLs = '//gdata.youtube.com/feeds/api/videos/'+ videoIDs +'?v=2&
format=5alt=json-in-script&callback=?';
return $.ajax({
type: "get",
dataType: "jsonp",
url: requestURLs,
success: function(data) {}
});
});
$.when.apply(null,defArray).done(function(){
$.each(arguments,function(i,arg){
var data = arg[0];
...

map メソッドと done メソッドは、ページに表示する前に、カンマ区切りの文字列に基づいて時系列順にすべてのビデオを取得します。このメソッドが使用されていない場合、Youtube はビデオ サムネイルのより高速でランダムな順序を返します。上記の関数は、1 つの動画 ID ではなく、2 つ以上の動画 ID に対して機能します。私の現在の問題は、YouTube サーバーに動画が存在しなくなった場合です。不足している ID を含むコンマ区切りの ID 文字列が失敗を引き起こし、関数が文字列内の ID を反映している既存の動画を取得できなくなります。これに対する回避策は大歓迎です。

注: 削除された動画のサムネイル (YouTube のデフォルトの削除された動画のサムネイル) を取得して、元の動画のサムネイルの合計数を (ID 文字列に基づいて) そのまま維持するために利用可能なものを取得できるようにしたいと考えています。サンプル/提案のためのThx。

更新

クロスドメインの問題がネイティブの ajax/jsonp プロセスのエラー処理を妨げているように見えますが、幸いなことに、jQuery-jsonp は 1kb プラグインでこれを軽減します ( https://github.com/jaubourg/jquery-jsonpを参照)。次の修正されたコードは次のようになります。

function videoIDs(){
var videoArray = $("#comma-delimited-IDs").val().split(",");
var defArray = $.map(videoArray, function (videoIDs) {
var requestURLs = '//gdata.youtube.com/feeds/api/videos/'+ videoIDs +'?v=2&
format=5alt=json-in-script&callback=?';
return $.jsonp({  // replace $.ajax({ with $.jsonp({ 
type: "get",
dataType: "jsonp",
url: requestURLs,
success: function(data) {},
error: function(d,msg) {
alert("Error. Video ID non existant.");

// add function here to skip missing ID and proceed to next ID in CSV string

}
});
});
$.when.apply(null,defArray).done(function(){
$.each(arguments,function(i,arg){
var data = arg[0];

... // code that displays Youtube thumbnails etc of available IDs.

そのため、動画 ID が存在しない (削除または非公開) 場合はアラートがすぐにポップアップしますが、その場合、現在のコード状態の関数は停止し、既存の ID が CSV にある動画のサムネイル画像を取得しません。ストリング。次の順序のように、CSV 文字列で見つかったすべての ID を反復処理する方法はありますか? :

  1. CSV 文字列の最初の ID のデータを要求します。
  2. アラート (または見つからない) の場合は、無視して CSV 文字列の 2 番目の ID に移動します。それ以外の場合は、最初の ID のデータ (サムネイルなど) を返し、完了したら CSV 文字列の 2 番目の ID に移動します。
  3. 完了するまで、ID のすべての CSV 文字列で上記の手順を時系列で繰り返します。

私は ajax-jsonp メソッドが初めてで、jQuery レベルはまだ初心者です。誰かが実行可能な解決策を提案できることを願っています.thxを助けてください.

4

1 に答える 1