我正在尝试为我的网站实现jQuery Flare视频插件..有一个下拉菜单,用户必须选择一年,当点击提交按钮时,视频将显示在屏幕上。我有一个数据库,可以从数据库中抓取视频的路径,即$row['videoName']
。
我的问题是如何在jQuery函数中传递PHP变量。在插件中给出的示例中,在jQuery函数的src
属性中给出了视频的完整路径。我试图通过将PHP变量传递给它来使src
动态。
我没有收到任何错误,屏幕上显示包含视频的div,但视频没有显示。
谢谢。
jQuery(function($){
fv = $("#video").flareVideo();
fv.load([
{
src: '$row['videoName']',
type: 'video/mp4'
}
]);
})
</script>
答案 0 :(得分:4)
要访问PHP变量,必须将代码括在PHP括号中,如下所示:
jQuery(function($){
fv = $("#video").flareVideo();
fv.load([
{
src: "<?php echo $row['videoName']; ?>",
type: 'video/mp4'
}
]);
})
</script>
这也必须与创建PHP变量以允许访问的页面相同。
答案 1 :(得分: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'
}]);
})
答案 2 :(得分:1)
jQuery(function($){
fv = $("#video").flareVideo();
fv.load([
{
src: '<?= $row['videoName'] ?>',
type: 'video/mp4'
}
]);
})
</script>
答案 3 :(得分: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;
答案 4 :(得分:1)
视频的网址应位于HTML范围内。 JS可以方便地获取URL,例如
fv.load({
src: $('.videlink').attr('href'),
type: 'video/mp4'
})
我不知道这个flareVideo()的精确javascript,但URL应该真的在你的HTML里面。不要只是将它传递给JavaScript,这是非常难看的设计:\
答案 5 :(得分: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()事件处理程序,您可以启动视频而无需重新加载任何页面。
您可以使用相同的方法根据数据库查询构建项目表。只需根据数据库输出命名对象或使用唯一值对其进行标识。
(代码未经测试)
答案 6 :(得分:0)
关于使用cookie执行此操作的想法?我觉得这样的事情......
PHP
setcookie('your_cookie_name', json_encode($your_array), time()+3600, "\");
Javascript
然后,您将在JS中使用PHP数组来执行您想要在其上执行的任何JS。
var arrayVar = []
arrayVar = $.parseJSON($.cookie('your_cookie_name'));