3

我正在尝试为我的网站实现 jQuery Flare 视频插件。有一个下拉菜单,用户必须从中选择一年,当单击提交按钮时,视频将显示在屏幕上。我有一个数据库,它从数据库中获取视频的路径,即$row['videoName']. 我的问题是如何在 jQuery 函数中传递 PHP 变量。在插件中给出的示例中,在srcjQuery 函数的属性中给出了视频的完整路径。我试图src通过将 PHP 变量传递给它来实现动态。

我没有收到任何错误,包含视频的 div 出现在屏幕上,但视频没有显示。

谢谢你。

    jQuery(function($){
          fv = $("#video").flareVideo();
          fv.load([
            {
              src:  '$row['videoName']',
              type: 'video/mp4'
            }
          ]);
        })
      </script>
4

7 回答 7

4

要访问 PHP 变量,您必须将代码括在 PHP 括号中,如下所示:

jQuery(function($){
    fv = $("#video").flareVideo();
    fv.load([
      {
        src:  "<?php echo $row['videoName']; ?>",
        type: 'video/mp4'
      }
    ]);
  })
</script>

这也必须与创建 PHP 变量以允许访问位于同一页面上。

于 2012-07-01T17:34:41.797 回答
3

我建议尽可能将 PHP 预处理排除在 javascript 之外。我有一个约定,在视图中从 PHP 创建所有变量的哈希,然后将它们注入到我的 Javascript 对象中。在这种情况下,您可以将这样的内容放入视图中:

<script>
var options = {
    videoName: '<?php echo $row['videoName']?>'
}
</script>

或者

<script>
var options = <?php echo json_encode($row);?>;
</script>

稍后在您的任何 javascript 文件中,您可以执行以下操作:

$(function(){
    fv = $("#video").flareVideo();
    fv.load([{
        src:  options.videoName,
        type: 'video/mp4'
    }]);
})
于 2012-07-01T17:46:23.207 回答
1
jQuery(function($){
      fv = $("#video").flareVideo();
      fv.load([
        {
          src:  '<?= $row['videoName'] ?>',
          type: 'video/mp4'
        }
      ]);
    })
  </script>
于 2012-07-01T17:33:07.283 回答
1

混合 php 和 js 代码很难看。因此,当您将所有 js 代码放入 .js 文件时,您可以这样做:

将代码写入 .js 文件

jQuery(document).ready(function($){
    fv = $("#video").flareVideo();
    fv.load([
    {
        src:  videoName, // videoName is in the global scope
        type: 'video/mp4'
    }
    ]);
})

var videoName = ""; // init var to avoid undefined values

将代码写入 .php 文件

echo <<<EOM
<script type="text/javascript">
var videoName = '{$row['videoName']}';
</script>
EOM;
于 2012-07-01T17:45:20.080 回答
1

视频的 URL 应该在 HTML 范围内的某个位置。JS 可以方便地获取 URL,例如

fv.load({
  src: $('.videlink').attr('href'),
  type: 'video/mp4'
})

我不知道这个flareVideo() 的确切javascript,但URL 应该真的在你的HTML 中的某个地方。不要只将它传递给 JavaScript,这真的是丑陋的设计:\

于 2012-07-01T18:32:25.440 回答
1

将 PHP 变量传递给 jQuery 的另一种方法是通过 DOM。您说您有一个用户选择年份的下拉列表。当您构建页面时,获取整个视频数组,如下所示:

$rows = array(
    '1991' => '/url/to/your/1991-video',
    '1992' => '/url/to/your/1992-video',
    '1993' => '/url/to/your/1993-video',
    '1994' => '/url/to/your/1994-video'
);

因此,您可以像这样构建您的选择列表:

<select id="videoName">
  <option value="<?php echo $rows['1991'] ?>">1991</option>
  <option value="<?php echo $rows['1992'] ?>">1992</option>
  <option value="<?php echo $rows['1993'] ?>">1993</option>
  <option value="<?php echo $rows['1994'] ?>">1994</option>
</select>

我使用了一个简单的数组,但您将使用数据库查询的结果,您也可以使用 foreach 来构建下拉列表。

然后您的视频脚本将仅引用 $('#videoName').value()。

通过在 select 上执行 .change() 事件处理程序,您可以启动视频而无需重新加载任何页面。

您可以使用相同的方法基于数​​据库查询构建项目表。只需根据您的数据库输出命名您的对象或使用唯一值标识它们。

(代码未经测试)

于 2013-04-18T21:14:28.197 回答
0

想用饼干做这个吗?我想像这样的事情......

PHP

setcookie('your_cookie_name', json_encode($your_array), time()+3600, "\");

Javascript

然后,您将在 JS 中使用 PHP 数组来执行您想要在其上执行的任何 JS。

 var arrayVar = []
    arrayVar = $.parseJSON($.cookie('your_cookie_name'));
于 2017-01-19T20:11:51.453 回答