-7

我正在制作一个使用许多不同 php 文件的网站。我的网站使用 Wordpress,是一个音乐博客。我在屏幕顶部有一个 jPlayer 播放列表,对于每个单独的帖子,我都希望有一个播放按钮来播放那首歌。

我在几个不同的 php 文件中用 php 和 javascript 制作了一些函数。如何在我的一个 php 文件中声明一个全局 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";
}

几乎我只需要从第一个文件访问song_index到一个 php 变量中,这样我就可以传递它。如您所见,我尝试使用 $_GET ,因为有人说您可以通过这种方式访问​​ JS 变量,但它不起作用。有人有任何线索吗?

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']你现在正在做的。您需要确保的一件事是这$myGlobalSongIndex两个地方都在范围内。这意味着如果它在函数或类中,则需要使用global关键字。

这种确切的方法有一个缺点。您将无法将 javascript 分离到一个单独的文件中,这在许多情况下可能非常好。您可以在 php 中编写以下内容,作为 html 部分的head一部分:

<?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.ini 中呈现该字段。

于 2013-02-14T22:45:16.197 回答
0

您必须将 js 变量放入 url 查询字符串(本质上是发送一个 GET 请求,您可以在其中从 PHP 访问这些变量)或使用AJAX

所以 www.yoursite.com?song_index=5

或建立一个ajax调用并在数据中发送你的变量

于 2013-02-14T22:44:34.227 回答