Я пытаюсь реализовать 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'));