2012-07-01 3 views
3

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

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

спасибо.

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

возможно дубликат: [http://stackoverflow.com/q/2370768/235710](http://stackoverflow.com/q/2370768/235710) –

ответ

4

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

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

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

+0

Спасибо за ответ. Еще одна проблема заключается в следующем: есть ли способ с переменным PHP на той же странице, что и jQuery? Может быть, СЕССИИ или require()? –

+0

Возможно, вы можете использовать переменную $ _SESSION [] и получить тот же результат, просто убедитесь, что JavaScript содержится на странице PHP, чтобы PHP был визуализирован. –

+0

Я пытаюсь показать переменную PHP без двойных кавычек и ее всегда давать ошибку в консоли (инструменты разработчика Chrome). Ваше решение решило мою проблему, сохранив двойные кавычки. благодаря – vkrams

1
jQuery(function($){ 
     fv = $("#video").flareVideo(); 
     fv.load([ 
     { 
      src: '<?= $row['videoName'] ?>', 
      type: 'video/mp4' 
     } 
     ]); 
    }) 
    </script> 
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; 
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' 
    }]); 
}) 
1

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

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

Я не знаю точно JavaScript этого flareVideo() вещь, но URL должен действительно быть где-то внутри HTML. Не просто передать это JavaScript, это действительно уродливый дизайн: \

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().

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

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

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

0

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

PHP

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

Javascript

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

var arrayVar = [] 
    arrayVar = $.parseJSON($.cookie('your_cookie_name')); 
Смежные вопросы