Comment vérifier si une vidéo existe sur YouTube, du côté client

Je fais une validation pour mon champ de texte url Youtube .

Je dois vérifier, si l'URL de Youtube n'existe pas, je devrais lancer une erreur, j'ai suivi cette réponse et créé le jsfiddle pour le vérifier.

Cela fonctionne pour une URL valide, mais cela ne fonctionne pas pour une URL invalide. Tout ce que je vois est une erreur 404 dans network console

Entrez la description de l'image ici

Existe-t-il un moyen de vérifier si l'URL existe dans le côté client en utilisant JavaScript et jQuery .

Voici mon code:

 var videoID = 'kn8yzJITdvI';//not working //var videoID = 'p4kIwWHP8Vc';//working $.ajax({ url: "https://gdata.youtube.com/feeds/api/videos/" + videoID + "?v=2&alt=json", dataType: "jsonp", success: function(data) { console.log(data) $("#result").text(data); }, error: function(jqXHR, textStatus, errorThrown) { // Handle errors here alert('ERRORS: ' + textStatus); } }); 

JSfiddle Link

@hitesh, Supprimez le type de données: 'jsonp' de la requête ajax. De cette façon, vous obtiendrez json string si l'identifiant vidéo est disponible et s'il n'est pas disponible, le rappel d'erreur ajax serait invoqué. J'ai essayé de votre violon et ça fonctionne. Essayez comme ça,

 //var videoID = 'kn8yzJITdvI';//not working var videoID = 'p4kIwWHP8Vc';//working $.ajax({ url: "https://gdata.youtube.com/feeds/api/videos/" + videoID + "?v=2&alt=json", //dataType: "jsonp", success: function(data) { console.log(data) $("#result").text(data); }, error: function(jqXHR, textStatus, errorThrown) { // Handle errors here alert('ERRORS: ' + textStatus); } }); 

Voici une autre mise en œuvre courte pour la solution dont vous avez besoin –

 //var videoID = 'kn8yzJITdvI';//not working var videoID = 'p4kIwWHP8Vc';//working $.getJSON('http://gdata.youtube.com/feeds/api/videos/'+videoID+'?v=2&alt=jsonc',function(data,status,xhr){ alert(data.data.title); }).error(function() { alert("error"); }); 

À partir de $ .ajax docs :

Erreur

Remarque: Ce gestionnaire n'est pas appelé pour les scripts entre domaines et les requêtes JSONP entre domaines.

Quelqu'un a déjà eu le même problème que vous, vous ne pouvez pas vérifier une erreur 404 lorsque vous faites des demandes interministérielles. Vous devriez le gérer par un délai d'attente.

Traitement des erreurs de demande JSONP

Essayez ceci du côté du client:

 //here, oABCD01234 is YouTube id $.ajax({ type: 'HEAD', url: 'http://gdata.youtube.com/feeds/api/videos/oABCD01234', success: function() { //it exists! }, error: function(jqXhr) { if(jqXhr.status == 400) { //it doesn't exist } } }); 

Pour ceux qui recherchent une solution utilisant l'API V3, vous pouvez effectuer les opérations suivantes:

 var videoID = 'the_youtube_video_id'; $.getJSON('https://www.googleapis.com/youtube/v3/videos?id=' + videoID + "&key=INSERT_YOUR_API_KEY_HERE&part=COMMA_DELIMITED_VALUE", function (data, status, xhr) { if (data.items.length > 0) alert('It is there!') else alert('Are you sure you about the Id?'); console.log(status); console.log(xhr); }).error(function (xhr, errorType, exception) { var errorMessage = exception || xhr.statusText || xhr.responseText; alert(errorMessage); }); 

Pour une liste de parts valides, vous pouvez visiter la page doc ici .