-7

さまざまな php ファイルを使用する Web サイトを作成しています。私のサイトはWordpressを使用しており、音楽ブログです。画面の上部に jPlayer プレイリストがあり、個々の投稿ごとに、その曲を再生するための再生ボタンが必要です。

いくつかの異なるphpファイルにまたがるphpとjavascriptでいくつかの関数を作成しました。php ファイルの 1 つでグローバル JavaScript 変数を宣言し、別の php ファイルでアクセスするにはどうすればよいですか? 言い方が悪いのは承知していますので、説明させてください。

ファイル 1: my_functions.php (ここで jPlayer プレイリストをセットアップします。変数 song_index は、グローバルにしたいものです。

<script type = "text/javascript">
    var song_index = 0;
    var theTitles = new Array();
    var theMP3s = new Array();
    var jplayer_playlist;

    function add_song(title, mp3)
    {
        theTitles[song_index] = title;
        theMP3s[song_index] = mp3;
        song_index++;
    }

    function play_song(index)
    {
        alert("You want to play song " + index);
        //jplayer_playlist.play(index);
    }

    function get_playlist()
    {
        var playlist = new Array();

        for(var i = 0; i < theTitles.length; i++)
        {
            playlist[i] = {title: theTitles[i], mp3: theMP3s[i]};
        }
        return playlist;
    }


    $(document).ready(function()
    {
        var playlist = get_playlist();
        jplayer_playlist = new jPlayerPlaylist({
            jPlayer: "#jquery_jplayer_1",
            cssSelectorAncestor: "#jp_container_1",
            oggSupport:false
        }, playlist, {
            swfPath: "/js",
            supplied: "mp3",
            wmode: "window"
        }
        );
    });
    //]]>
    </script>

これにより、jPlayer プレイリストがページごとに動的に設定されます。

ファイル 2 shortcodes.php (これは、Wordpress のショートコードを使用して曲を追加する場所です。曲をプレイリストに追加するときに使用するコードは次のとおりです...)

    function player_function($args)
{
    $url = $args['url'];
    $title = $args['title'];

    if(!$title)
    {
        $title = get_the_title();
    }

    add_song($title, $url);

    $ret = "<a href = '" . $url . "'></a><br><a href=\"javascript:void(0)\" onclick = \"play_song(".$_GET['window.song_index'].")\">Play</a>";

    return "$ret";
}

最初のファイルからphp変数にsong_indexにアクセスするだけで、それを渡すことができます。ご覧のとおり、誰かがこの方法で JS 変数にアクセスできると言っていたので $_GET を使用してみましたが、うまくいきませんでした。誰にも手がかりはありますか?

4

2 に答える 2

3

Javascript と PHP は、実際にはお互いについて何も知りません。ただし、PHP を使用して JavaScript に書き込むことはできます。したがって、 my_functions.php でこれを行うことができます:

<?php
  $myGlobalSongIndex = '0'; // or however you want to assign this else....
?>
<script type = "text/javascript">
    var song_index = <?php print myGlobalSongIndex; ?>;

次に、書き込みリンク行の shortcodes.php で、現在行っている$myGlobalSongIndexのの代わりに印刷$_GET['window.song_index']します。確認する必要がある 1 つのことは$myGlobalSongIndex、両方の場所で範囲内にあるということです。関数またはクラス内にある場合は、globalキーワードを使用する必要があります。

この正確なアプローチには欠点があります。多くの場合、JavaScript を別のファイルに分割することはできません。headhtml のセクションの一部として、php に次のように記述できます。

<?php
  $myGlobalSongIndex = '0'; // or however you want to assign this else....
?>
<script type = "text/javascript">
    var song_index = <?php print myGlobalSongIndex; ?>;
</script>

その後、必ず外部の JavaScript ファイルをロードしてください。次にsong_index、javascript ファイルで を使用するときは、php でフィールドをレンダリングせずに、それを含める可能性のあるすべてのページに対して実際に初期化されていることを確認する必要があります。

于 2013-02-14T22:45:16.197 に答える
0

js 変数を url クエリ文字列に入れる (基本的に、PHP からこれらの変数にアクセスできる GET 要求を送信する) か、AJAXを使用する必要があります。

そう www.yoursite.com?song_index=5

または ajax 呼び出しを作成し、変数をデータに送信します

于 2013-02-14T22:44:34.227 に答える