Bonjour.

Voici mon code PHP du ajax/setVideoBroken.php fichier qui renvoie un Json:

Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
if(isset($_POST["src"])) {
    $query = $con->prepare("UPDATE videos SET broken = 1 WHERE videoLink=:src");
    $query->bindValue(":src", $_POST["src"]);
    $query->execute();
 
    $response = ['success' => false];
    $videoQuery = $con->prepare("SELECT * FROM videos WHERE videoLink=:src");
    $videoQuery->bindValue(":src", $_POST["src"]);
    $videoQuery->execute();
    while($row = $videoQuery->fetch(PDO::FETCH_ASSOC)) {
        $response['success'] = true;
        $response = [
            'success' => true,
            'video_link' => $row["videoLink"],
            'thumbnail' => $row["thumbnail"],
            'video_type' => 'video/' . $row["video_extension"],
        ];  
    }
    header('Content-Type: application/json; charset=utf-8');
    echo json_encode($response);
    exit;
} else {
    echo "No src passed to page";
}

Ce Json retourné en PHP ci-dessus, est récupéré en Ajax (JavaScript) pour afficher le lien vidéo (video_link) dans la balise source qui elle-même est incluse dans la balise video:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
function loadVideo(src, className) {
 
    var video = $('<video id="player" playsinline controls><source /></video>');
 
    video.on("load", function() {
        $("." + className + " a").append(video);
 
        clearTimeout(timer);
 
        timer = setTimeout(function() {
            $(".imageResults").masonry();
        }, 500);
 
    });
 
    video.on("error", function() {
 
        $("." + className).remove();
 
        $.post("ajax/setVideoBroken.php", {src: src});
 
    });
 
    $.post("ajax/setVideoBroken.php", {src: src}, function(response) {
        if(response.success) {
            $('video', $video).attr('data-poster', response.thumbnail);
            $('source', $video)
                .attr('src', response.video_link)
                .attr('type', response.video_type);
        }
    });
 
}
Je tiens à préciser que response.video_link peut contenir des URLs vidéo simples (https://website.com/video.mp4) ou oEmbed de code HTML comme celui de Youtube (<iframe src="https://www.youtube.com/embed/4YCLRpKY1cs?feature=oembed"></iframe>)

Comment donc vérifier dans le code JavaScript:

  • Si response.video_link (la réponse video_link du Json retourné par le Code PHP) commence par < qui représente le signe d'ouverture de la balise HTML ???

  • Et si oui (video_link commence par le signe <, c'est que video_link équivaut à un code HTML de type `oEmbed` comme celui de Youtube), donner directement la valeur de ce code HTML à la variable var video.

  • Si non, on passe à la variable var video le code <video id="player" playsinline controls><source /></video> de sorte à ajouter à la balise source, le lien de la vidéo que contient la réponse JSON: video_link.


J'ai vraiment besoin de votre aide.