2

私はウェブサイトを書いています (Java を使わないのはこれが初めてです)。ランダムに選択されたビデオ (サーバー上のビデオ ファイルから選択されたもの) への URL を返す php ページ「GetAVideo.php」にリクエストを行う JavaScript 関数「changeVideo()」を呼び出します。

昨夜、私は問題なくビデオを見ることができましたが、今日、私のページをロードすると、GETリクエストが失敗したため、ビデオがロードされません: "NS_ERROR_FAILURE: Failure xhr_object.send();"

理由がわかりません。ここに私のソースがあります:javascript:

function changeVideo() 
{
    console.log("changeVideo path:", path);
    var xhr_object = null;
    if (window.XMLHttpRequest) // Firefox 
        xhr_object = new XMLHttpRequest();
    else if (window.ActiveXObject) // Internet Explorer 
        xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
    var request = "http://ogdabou.com/php/GetAVideo.php";

    console.log("request: ", request);
    xhr_object.open("GET", request, false);
    xhr_object.send();
    console.log("response: ", xhr_object.responseText);
    videoPlayer.src(xhr_object.responseText);
    videoPlayer.currentTime(0);
    videoPlayer.play();
    document.getElementById("videoTitle").innerHTML = xhr_object.responseText;
    return false;
};

php:

<?php
    $dirname = '../videos';

    $videoList = array();

    $dir = opendir($dirname);
    if (count($_GET) > 0)
    {
        $folders=explode(";", $_GET['folders']);
        foreach ($folders as $videoFolder) {
            $fullPath = $dirname."/".$videoFolder;
            echo "Visiting $fullpath";
            $videoList = fillVideoList($fullPath, $videoList);
        }
    }
    else
    {
        $videoList = fillVideoList($dirname, $videoList);
    }
    //use join to get the paths.

    closedir($dir);
    $choosenOne = $videoList[rand(0, count($videoList) - 1)];
    $choosenOne = str_replace("../videos/","", $choosenOne);
    echo "http://ogdabou.com/videos/".$choosenOne;
?>

<?php
    // Fill the videoList with the given folder. Also visit subdirectories.

    function fillVideoList($folder, $videoList)
    {

        $path = $folder;
        $folder = opendir($folder);
        while($file = readdir($folder)) { 
                if($file != '.' && $file != '..')
                {
                        $fullPath = "$path/$file";
                        if (is_dir($fullPath))
                        {
                                $videoList = fillVideoList($fullPath, $videoList);
                        }
                        else if(pathinfo($fullPath, PATHINFO_EXTENSION) == "webm")
                        {
                                $videoList[] = $fullPath;
                        }
                }    
        }
        return $videoList;  
    }
?>

ありがとうございました !

4

1 に答える 1

1

回答 :絶対URLではなく相対 URLを使用する必要がありました。Firefox はそれをクロスサイト スクリプティングとして認識しました。

変更しました: var request = " http://ogdabou.com/php/GetAVideo.php ";

to var request = "/php/GetAVideo.php";


THEN : VideoJS プレーヤーは次のように述べ ています: 「コンテンツ タイプ http text/plain はサポートされていません」

ルート フォルダーの.htaccess ファイルに「AddType video/webm .webm」を追加して、これを修正しました。

于 2013-09-18T09:15:54.193 に答える