【问题标题】:How do I use a JavaScript variable in PHP? [closed]如何在 PHP 中使用 JavaScript 变量? [关闭]
【发布时间】:2013-01-30 21:05:02
【问题描述】:

我正在制作一个使用许多不同 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 变量,但它不起作用。谁有线索?

【问题讨论】:

标签: php javascript wordpress


【解决方案1】:

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 文件。然后,当您在 javascript 文件中使用 song_index 时,您可能希望确保它确实已针对任何可能包含它的页面进行了初始化,而无需在 php 中呈现该字段。

【讨论】:

  • 嘿,非常感谢!实际上,我在写完这篇文章后就想到了这个解决方案,现在我已经开始使用它了。感谢您提供简单的解决方案!
【解决方案2】:

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

所以 www.yoursite.com?song_index=5

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-08
    • 1970-01-01
    • 2012-06-06
    • 1970-01-01
    • 2018-01-30
    • 2011-12-12
    • 2012-01-23
    相关资源
    最近更新 更多