1

首先,我需要感谢这个社区提供的丰富知识!自从我开始尝试学习 PHP 和 Javascript 以来,我在这些页面上找到的答案非常有价值。事实上,这是我第一次遇到无法仅通过在这里搜索来解决的问题。这是一个相当具体的问题,但希望答案不仅仅对我有用。

下面的代码是一个大得多的文档的精简版本,但我已将其归结为基本问题。不幸的是,它确实需要一个视频文件来说明问题。我不知道该怎么办。希望任何感兴趣的测试人员都能够替换他们本地服务器上的媒体文件。

这里的目标是播放一部电影并在下方显示 3 张图片。电影的来源是PHP指定的,但是因为我需要控制时间,所以通过调用Javascript函数来播放电影。感谢这里的许多以前的答案,我学会了如何将变量值从 PHP 传递到 Javascript。(您可以看出这很有效,因为第一个表格行的第二个单元格显示了正确的文件名。)

问题是,尽管值正确,但 newSource 参数并未作为标记的一部分进行评估。另一位用户在 Safari 5.1 中报告了类似的问题(Safari 5.1 in doesn't allow <video> source to detection $_SESSION variables),但同样的问题也出现在 Chrome 和 Firefox 中。

这是代码:

<?php session_start();?>

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title></title>
        <script>

            function ShowMovie(newSource){
                 document.getElementById("Movie").innerHTML="<video id='video1'><source=" + newSource + "type='video/mp4'></video>";
                 //document.getElementById("Movie").innerHTML="<video id='video1' source=" + newSource + "type='video/mp4'>"; this doesn't work either'
                 document.getElementById("Para").innerHTML="<p>" + newSource + "</p>";
            }

            function DisplayPics(){
              document.getElementById("Pic1").innerHTML="<img src=<? echo $_SESSION['pic1']?>>";
              document.getElementById("Pic2").innerHTML="<img src=<? echo $_SESSION['pic2']?>>";
              document.getElementById("Pic3").innerHTML="<img src=<? echo $_SESSION['pic3']?>>";
            }

        </script>
    </head>
    <body>
        <table>
            <tr>
                <td id="Movie">

                </td>
                <td id="Para">

                </td>
            </tr>
            <tr>
                <td id="Pic1">

                </td>
                <td id="Pic2">

                </td>
                <td id="Pic3">

                </td>
            </tr>
        </table>

        <?php 
            AssignPics();
            AssignMovie("Movies/foobar.mp4");//Testers: replace this file path with any playable video.    
        ?>
        <script>DisplayPics();</script>

        <?php

        function AssignPics(){
            $_SESSION['pic1'] = "Pictures/a.jpg";//Testers: replace these image sources with any images.    
            $_SESSION['pic2'] = "Pictures/b.jpg";
            $_SESSION['pic3'] = "Pictures/c.jpg";
        }

        function AssignMovie($file){
            echo "<script>ShowMovie(" . "'" . $file . "'" . ");</script>";
            //echo "<script>ShowMovieName(" . $file . ");</script>"; //Without the added single quotes, it throws "Uncaught ReferenceError: Movies not defined."
        }
        ?>


    </body>
</html>

Thanks very much for whatever help you can give!
4

1 回答 1

0

您需要将 'source' 属性用引号括起来......你也忽略了 - 源标签上源的实际属性是 'src'...... 所以对于这一行:

document.getElementById("Movie").innerHTML="<video id='video1'><source=" + newSource + "type='video/mp4'></video>";

将其更改为:

document.getElementById("Movie").innerHTML="<video id='video1'><source src='" + newSource + "' type='video/mp4'></video>";
于 2013-05-22T23:38:51.553 回答