我正在制作一个使用大量不同php文件的网站。我的网站使用Wordpress,是一个音乐博客。我在屏幕顶部有一个jPlayer播放列表,对于每个单独的帖子,我想要一个播放按钮来播放该歌曲。
我在php和javascript中通过一些不同的php文件制作了一些函数。如何在我的一个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变量,但它不起作用。有人有任何线索吗?
答案 0 :(得分: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文件。然后,当您在javascript文件中使用song_index
时,您可能希望确保它确实已初始化为您可能包含它的任何页面而不在php中呈现该字段。
答案 1 :(得分:0)
你必须将js变量放入url查询字符串(实质上是发送GET请求,你可以从PHP访问这些变量)或使用AJAX
所以www.yoursite.com?song_index=5
或构建ajax调用并在数据中发送变量