【问题标题】:Variable passed from PHP to JS function evaluates for <p>, but not for <video> source从 PHP 传递到 JS 函数的变量对 <p> 求值,但对 <video> 源不求值
【发布时间】:2013-05-18 04:23:03
【问题描述】:

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

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

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

问题在于,尽管具有正确的值,但 newSource 参数并未作为标记的一部分进行评估。另一位用户在 Safari 5.1 (Safari 5.1 in doesn't allow <video> source to detect $_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!

【问题讨论】:

  • php生成后的html代码是什么?

标签: php javascript video parameters arguments


【解决方案1】:

您需要将 '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>";

【讨论】:

  • 感谢收看这个;这解决了上面压缩代码的问题。不幸的是,它并没有解决我的代码完整版本的问题,我仍在尝试找出差异。在感谢您的这一部分之前,我只是不想再拖延了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-01-29
  • 1970-01-01
  • 1970-01-01
  • 2011-03-19
  • 1970-01-01
  • 1970-01-01
  • 2015-03-29
相关资源
最近更新 更多