Javascript Http 获取请求错误 : NS_ERROR_FAILURE

标签 javascript php request

我正在编写一个网站(这是我第一次没有使用 java..)并且完成的事情很简单。 我调用了一个 javascript 函数“changeVideo()”,该函数向 php 页面“GetAVideo.php”发出请求,该页面将 url 返回到随机选择的视频(在我的服务器上的视频文件之间选择)。

昨晚,我可以毫无问题地观看视频,但今天,当我加载我的页面时,视频没有加载,因为 GET 请求失败: “NS_ERROR_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;  
    }
?>

谢谢!

最佳答案

回答: 我必须使用相对 url 而不是绝对。 Firefox 将其识别为跨站点脚本。

我改变了: var request = "http://ogdabou.com/php/GetAVideo.php ";

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


然后: VideoJS 播放器说: “不支持内容类型 http text/plain”

我通过将“AddType video/webm .webm”添加到根文件夹中的 .htaccess 文件 来解决这个问题。

关于Javascript Http 获取请求错误 : NS_ERROR_FAILURE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18867546/

相关文章:

php - 在 phalcon 中将多个图像插入 mysql 数据库

php - 从 PHP while 循环中删除 MySQL 行

javascript - MooTools 表单请求在提交后恢复值

javascript - 使用 Knockout 从数组中设置正确的文本时遇到问题

javascript - 检查服务 worker 的窗口是否处于事件状态

Javascript:动态生成处理程序

java - 如何以 PHP 和 Rails 的风格将请求参数获取到 Java 中的数组?

javascript - 如何避免 `addEventListener` 和 `window.open` 之间的竞争条件

php - 从多个数据库的多个表中删除一行

java - CORBA + JAVA + 动态客户端 - Request 对象的 invoke() 方法失败