Передача переменной PHP в функцию jQuery

Я пытаюсь реализовать JQuery Flare Video Plugin для моего сайта .. Там выпадающее меню, которое пользователь должен выбрать год, когда нажата кнопка отправки, на экране будет показано видео. У меня есть база данных, которая захватывает путь к видео из базы данных, то есть $row['videoName'] . Мой вопрос в том, как передать переменные PHP в функции jQuery. В примере, приведенном в плагине, полный путь к видео был указан в атрибуте src функции jQuery. Я пытаюсь сделать динамику src , передав в нее переменную PHP.

Я не получаю никакой ошибки, и div, содержащий видео, появляется на экране, но видео не отображается.

Спасибо.

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

Чтобы получить доступ к переменной PHP, вы должны заключить код в скобки PHP так:

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

Это также должно быть на той же странице, что и переменная PHP для доступа.

Я бы посоветовал как можно больше сохранить предварительную обработку 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' }]); }) 
 jQuery(function($){ fv = $("#video").flareVideo(); fv.load([ { src: '<?= $row['videoName'] ?>', type: 'video/mp4' } ]); }) </script> 

Смешать 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; 

URL-адрес видео должен находиться где-то в пределах области HTML. JS пригодится, чтобы захватить URL-адрес, с чем-то вроде

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

Я не знаю точного javascript этого объекта flareVideo (), но URL ДОЛЖЕН быть где-то внутри вашего HTML. Не просто передать это JavaScript, это действительно уродливый дизайн: \

Еще один способ передать переменные 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 ().

Выполняя обработчик события .change () при выборе, вы можете запустить видео без необходимости перезагрузки каких-либо страниц.

Вы можете использовать тот же подход для создания таблиц элементов на основе запроса к базе данных. Просто назовите свои объекты или укажите их уникальными значениями на основе вывода вашей базы данных.

(код не проверен)

Мысли об этом с печеньем? Я думаю, что-то вроде этого …

PHP

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

Javascript

Тогда у вас будет массив PHP в JS, чтобы сделать все, что вы хотели бы преподать на JS.

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