【问题标题】:Trouble with api'sapi的问题
【发布时间】:2016-03-12 18:47:37
【问题描述】:

我是使用 api 和 php 的新手。但我正在尝试使用我的简单页面上的“新视频”按钮从我的项目目录中获取视频。我无法播放新视频。它看起来是我的语法错误,但我不确定我在哪里犯了错误。另外,我正在使用 slim v2 框架,如果这有影响的话。

    <!DOCTYPE html>

<html lang="en">
    <head>
        <title>WOO</title>
        <style type="text/css">
            .center {
                margin-left: auto;
                margin-right: auto;
                margin-top: 0px;
                width: 70%;
            }
            h3 {
                margin-left: auto;
                margin-right: auto;
                margin-bottom: 0px;
                width: 70%;
                font-family: "Lucida Console", Monaco, monospace;
            }
        </style>
    </head>
    <body style="background-color: honeydew;">
        <h3 id="video-title">Video Example <button id="do-it">new video</button></h3>
        <div class="center">
            <video id="game" height="600" width="800" controls>
                <source src="videos/cyanide.mp4" type="video/mp4" />
                You can't play this video
            </video>
        </div>
        <script src="https://code.jquery.com/jquery-2.2.1.min.js"></script>
        <script type="text/javascript">
            $('#do-it').on('click', function() {
                var video = document.getElementsByTagName('video')[0];
                var source = video.getElementsByTagName('source')[0];

                $.ajax({
                    'url'       : 'php/api.php/getVideo?search=anthony',
                    'method'    : 'GET',
                    'dataType'  : 'json'
                }).done(function(data) {
                    console.log(data);
                    source.src = data.src;
                    $('#video-title').text(data.title);
                    video.load();
                })
            });
        </script>
    </body>
</html>

这是完整的 html 脚本,下面是我的 php 脚本

<?php
require 'vendor/autoload.php';

$app = new \Slim\Slim();

// If the url matchs a certain word, it'll go to the function specified
$app-> get('/getTest','getTest');
$app-> get('/getVideo','getVideo');
$app->run();

function getTest () {
    echo '{"woo":' . json_encode('we made it') . '}';
}

function getVideo() {
    // get params from query string
    $app = \Slim\Slim::getInstance();
    $search = $app->request()->params('search');

    // get video data from search

    $video = (object)array("title" => "CLUTCH AD", "src" => "videos/anthony_davis.mp4");
    echo json_encode($video);
}

【问题讨论】:

  • 请显示相关的HTML。另外,您是否查看了调试控制台以查看报告了哪些脚本错误?在我的脑海中,我猜测您的 ajax URL 的相对路径是一个问题。另外,您知道您的 PHP 脚本是否正在执行吗?
  • 表示我的请求没有找到。

标签: php jquery api video-streaming


【解决方案1】:

如果没有从浏览器中找到 PHP 请求,那么很可能是这个相对 URL:

'php/api.php/getVideo?search=anthony'

不正确。我们不知道您的页面或脚本的文件层次结构,但我建议您首先尝试使用包含主机名和完整路径的完全限定 URL 以使其正常工作。如果出于某种原因从那里使用相对路径,则可以在从工作脚本开始时对其进行修改。要使其正常工作,请切换到包含 http:// 的完全限定 URL:

'http://somedomain.com/somepath/php/api.php/getVideo?search=anthony'

【讨论】:

  • 我有点不确定你说要做什么。我对此很陌生,你能解释一下吗?
  • 我是说在尝试发出 PHP 请求时使用完全限定的 URL。在我的答案中填写示例 URL 的 somedomain.com/somepath 部分,并确保它以适当的 http://https:// 开头。如果您仍然不明白什么是完全限定 URL 或绝对 URL,请参阅 here
  • 错误是说我的 $('do-it') 函数是一个未解析的函数。我尝试提供一个完全限定的 URL,但没有解决问题。
  • @ColeM - 什么是未解析的函数?请发布确切的逐字错误消息,并告诉我们您是在浏览器中还是在 PHP 中看到的。在描述您看到的内容和看到的错误消息时,您必须非常具体。只有这样我们才能充分理解,才有机会帮助您。
  • 另外,当我在浏览器中输入确切的 URL 时,它只会给我 404 错误。
猜你喜欢
  • 2020-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-11
  • 1970-01-01
  • 2020-06-06
  • 2019-06-04
相关资源
最近更新 更多