将PHP变量传递给jQuery函数

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

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

谢谢。

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

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

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

这也必须与创建PHP变量以允许访问的页面相同。

我建议尽可能地保持PHP预处理不受javascript的影响。 我有一个约定,在视图中从PHP创建所有变量的哈希,然后将它们注入我的Javascript对象。 在这种情况下,您可以将类似的内容放入视图中:

  

要么

  

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

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

混合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 << var videoName = '{$row['videoName']}';  EOM; 

video的URL应该位于HTML范围内。 JS可以方便地获取URL,例如

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

我不知道这个flareVideo()的精确javascript,但URL应该在你的HTML里面。 不要只把这个传递给JavaScript,这真是丑陋的设计:

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

 $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' ); 

所以你可以像这样构建你的选择列表:

  

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

然后你的video脚本只会引用$(’#videoName’)。value()。

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

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

(代码未经测试)

关于用cookie做这个的想法? 我觉得这样的事……

PHP

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

使用Javascript

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

  var arrayVar = [] arrayVar = $.parseJSON($.cookie('your_cookie_name'));