3

Web サイトに jQuery Flare Video Plugin を実装しようとしています。ユーザーが年を選択する必要があるドロップダウン メニューがあり、送信ボタンをクリックするとビデオが画面に表示されます。データベースからビデオへのパスを取得するデータベースがあります$row['videoName']。私の質問は、jQuery 関数で PHP 変数を渡す方法です。プラグインで指定された例では、ビデオへのフルパスsrcが jQuery 関数の属性で指定されました。srcPHP変数を渡すことで動的にしようとしています。

エラーは発生せず、ビデオを含む div が画面に表示されますが、ビデオは表示されません。

ありがとうございました。

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

7 に答える 7

4

PHP 変数にアクセスするには、次のようにコードを PHP ブラケットで囲む必要があります。

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

これは、アクセスを許可するために PHP 変数が作成されるのと同じページ上にある必要もあります。

于 2012-07-01T17:34:41.797 に答える
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'
    }]);
})
于 2012-07-01T17:46:23.207 に答える
1

PHP 変数を jQuery に渡すもう 1 つの方法は、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() イベント ハンドラーを実行することで、ページをリロードしなくてもビデオを開始できます。

同じ方法を使用して、データベース クエリに基づいて項目のテーブルを作成できます。オブジェクトに名前を付けるか、データベースの出力に基づいて一意の値で ID を付けるだけです。

(コードはテストされていません)

于 2013-04-18T21:14:28.197 に答える
1
jQuery(function($){
      fv = $("#video").flareVideo();
      fv.load([
        {
          src:  '<?= $row['videoName'] ?>',
          type: 'video/mp4'
        }
      ]);
    })
  </script>
于 2012-07-01T17:33:07.283 に答える
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;
于 2012-07-01T17:45:20.080 に答える
1

ビデオへの URL は、HTML スコープ内のどこかにある必要があります。JS は、次のような URL を取得するのに便利です。

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

この FlareVideo() の正確な JavaScript はわかりませんが、URL は実際には HTML 内のどこかにある必要があります。これをJavaScriptに渡さないでください。これは本当に醜いデザインです:\

于 2012-07-01T18:32:25.440 に答える