我有一个Wordpress主题,页脚上有一个粘性音频播放器,正在播放Shoutcast电台。
我将歌曲艺术家/标题详细信息调用到另一个PHP文件的粘滞栏中,它显示正常,但它永远不会更新。我需要这个文本内容每10秒重新加载一次,而不会重新加载整个网页。
有人可以建议怎么做吗?提前感谢你。
网站演示:http://gulsonpower.com/the80s/
这是主题中包含音频播放器的PHP文件的代码:
(无线电player.php)
<?php
$radio_ip = get_option('atp_radiostream_id');
$radio_autoplay = get_option('atp_radio_autoplay');
$radio_title = get_option('atp_radio_title');
$radio_desc = get_option('atp_radio_desc');
$atp_playlist_volume = get_option( 'atp_playlist_volume' ) ? get_option( 'atp_playlist_volume' ) : '0.6';
?>
<script type="text/javascript">
jQuery(document).ready(function($){
var stream = {
mp3: "<?php echo $radio_ip; ?>"
},
ready = false;
$("#jquery_jplayer_1").jPlayer({
ready: function (event) {
ready = true;
$(this).jPlayer("setMedia", stream)<?php if($radio_autoplay =='on'){ ?>.jPlayer("play")<?php } ?>;
},
pause: function() {
$(this).jPlayer("clearMedia");
},
error: function(event) {
if(ready && event.jPlayer.error.type === $.jPlayer.error.URL_NOT_SET) {
// Setup the media stream again and play it.
$(this).jPlayer("setMedia", stream)<?php if($radio_autoplay =='on'){ ?>.jPlayer("play")<?php } ?>;
}
},
swfPath: "<?php echo get_template_directory_uri(); ?>/js",
volume: <?php echo $atp_playlist_volume; ?>,
supplied: "m4a, oga, mp3",
preload: "none",
wmode: "window",
keyEnabled: true
});
// songs played in single page every thing
var my_jPlayer = jQuery("#jquery_jplayer_1");
jQuery(".fap-single-track").click(function(e) {
my_jPlayer.jPlayer("setMedia", {
mp3: jQuery(this).attr("href"),
title: jQuery(this).attr("title"),
});
var first_track = true;
my_jPlayer.jPlayer("play");
first_track = false;
$(this).blur();
return false;
});
});
</script>
<div id="jp_container_1" class="jp-audio jp-radio">
<div class="jp-type-single">
<div class="jp-gui jp-interface">
<div class="jp-inner">
<div class="jp-close-btn">+</div>
<ul class="jp-controls">
<li><a href="javascript:;" class="jp-play" tabindex="1">play</a></li>
<li><a href="javascript:;" class="jp-pause" tabindex="1">pause</a></li>
<li><a href="javascript:;" class="jp-stop" tabindex="1">stop</a></li>
<li><a href="javascript:;" class="jp-mute" tabindex="1" title="mute">mute</a></li>
<li><a href="javascript:;" class="jp-unmute" tabindex="1" title="unmute">unmute</a></li>
<li><a href="javascript:;" class="jp-volume-max" tabindex="1" title="max volume">max volume</a></li>
</ul>
<div class="jp-progress">
<strong class="jp-title"><?php echo $radio_title ?></strong>
<span class="jp-title" style="display:block;"><?php include 'now-playing.php' ?></span>
</div>
<div class="jp-time-holder">
<div class="jp-current-time"></div>
</div>
<div class="jp-volume-bar">
<div class="jp-volume-bar-value"></div>
</div>
</div>
</div>
</div>
</div>
它正在调用(now-playing.php)
<?php
/*
Now Playing PHP script for SHOUTcast
This script is (C) MixStream.net 2008
Feel free to modify this free script
in any other way to suit your needs.
Version: v1.1
*/
/* ----------- Server configuration ---------- */
$ip = "streaming.the80s.com.au";
$port = "80";
/* ----- No need to edit below this line ----- */
/* ------------------------------------------- */
$fp = @fsockopen($ip,$port,$errno,$errstr,1);
if (!$fp)
{
echo "Connection refused"; // Diaplays when sever is offline
}
else
{
fputs($fp, "GET /7.html HTTP/1.0\r\nUser-Agent: Mozilla\r\n\r\n");
while (!feof($fp))
{
$info = fgets($fp);
}
$info = str_replace('</body></html>', "", $info);
$split = explode(',', $info);
if (empty($split[6]) )
{
echo "The current song is not available"; // Diaplays when sever is online but no song title
}
else
{
$title = str_replace('\'', '`', $split[6]);
$title = str_replace(',', ' ', $title);
echo "$title"; // Diaplays song
}
}
?>
答案 0 :(得分:2)
如果您使用ajax,这可能就是一个例子:
$(document).ready(function() {
$("#player").html('').load("what-isplaying.php");
var refreshId = setInterval(function() {
$("#player").html('').load("what-isplaying.php");
}, 4000);
$.ajaxSetup({ cache: false });
});
在哪里#player DIV是应该包含歌曲的名称,what-is-playing.php应仅包含一个带有歌曲名称的回声,每4次刷新一次秒。
举个例子,继续自己改进。
答案 1 :(得分:0)
有几个框架可以为ajax提供jquery技巧,例如Why does this() and super() have to be the first statement in a constructor? 例如,在jquery中,你可以这样做
$( "#result" ).load( "my-php-page-that-returns-what-i-want.php" );
在任何情况下,我都会看看这个树Jquery方法,以开始跨异步生活的学习之旅。
$.get
$.post
$.load
答案 2 :(得分:0)
因为您已经在使用代码中的Jquery <suite name="Sample Tests" verbose="1">
<listeners>
<listener class-name="com.frmwrk.listener.CustomTestListener" />
<listener class-name="com.frmwrk.listener.CustomizedReporter" />
</listeners>
<test name="TestRun" preserve-order="true">
<groups>
<run>
< exclude name="reboot" />
</run>
</groups>
<classes>
<class name="com.test.Start_Suite" />
</classes>
</test>
<test name="Reboot TEST" preserve-order="true" parallel="false">
<groups>
<run>
<exclude name="Setup" />
</run>
</groups>
<classes>
<class name= "com.test.1_Reboot" />
</classes>
</test>
</suite>
看看Jquery Ajax函数:
http://api.jquery.com/jquery.ajax/
要每隔10秒加载一次,请使用JS间隔 http://www.w3schools.com/jsref/met_win_setinterval.asp
答案 3 :(得分:0)
您可以使用load
jquery
功能
<?php
$radio_ip = get_option('atp_radiostream_id');
$radio_autoplay = get_option('atp_radio_autoplay');
$radio_title = get_option('atp_radio_title');
$radio_desc = get_option('atp_radio_desc');
$atp_playlist_volume = get_option( 'atp_playlist_volume' ) ? get_option( 'atp_playlist_volume' ) : '0.6';
?>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script type="text/javascript">
function loadlink(){
$('.jp-progress span.jp-title').load('now-playing.php',function () {
$(this).unwrap();
});
}
jQuery(document).ready(function($){
loadlink(); // This will run on page load
setInterval(function(){
loadlink() // this will run after every 5 seconds
}, 5000);
var stream = {
mp3: "<?php echo $radio_ip; ?>"
},
ready = false;
$("#jquery_jplayer_1").jPlayer({
ready: function (event) {
ready = true;
$(this).jPlayer("setMedia", stream)<?php if($radio_autoplay =='on'){ ?>.jPlayer("play")<?php } ?>;
},
pause: function() {
$(this).jPlayer("clearMedia");
},
error: function(event) {
if(ready && event.jPlayer.error.type === $.jPlayer.error.URL_NOT_SET) {
// Setup the media stream again and play it.
$(this).jPlayer("setMedia", stream)<?php if($radio_autoplay =='on'){ ?>.jPlayer("play")<?php } ?>;
}
},
swfPath: "<?php echo get_template_directory_uri(); ?>/js",
volume: <?php echo $atp_playlist_volume; ?>,
supplied: "m4a, oga, mp3",
preload: "none",
wmode: "window",
keyEnabled: true
});
// songs played in single page every thing
var my_jPlayer = jQuery("#jquery_jplayer_1");
jQuery(".fap-single-track").click(function(e) {
my_jPlayer.jPlayer("setMedia", {
mp3: jQuery(this).attr("href"),
title: jQuery(this).attr("title"),
});
var first_track = true;
my_jPlayer.jPlayer("play");
first_track = false;
$(this).blur();
return false;
});
});
</script>
<div id="jp_container_1" class="jp-audio jp-radio">
<div class="jp-type-single">
<div class="jp-gui jp-interface">
<div class="jp-inner">
<div class="jp-close-btn">+</div>
<ul class="jp-controls">
<li><a href="javascript:;" class="jp-play" tabindex="1">play</a></li>
<li><a href="javascript:;" class="jp-pause" tabindex="1">pause</a></li>
<li><a href="javascript:;" class="jp-stop" tabindex="1">stop</a></li>
<li><a href="javascript:;" class="jp-mute" tabindex="1" title="mute">mute</a></li>
<li><a href="javascript:;" class="jp-unmute" tabindex="1" title="unmute">unmute</a></li>
<li><a href="javascript:;" class="jp-volume-max" tabindex="1" title="max volume">max volume</a></li>
</ul>
<div class="jp-progress">
<strong class="jp-title"><?php echo $radio_title ?></strong>
<span class="jp-title" style="display:block;"><?php include 'now-playing.php' ?></span>
</div>
<div class="jp-time-holder">
<div class="jp-current-time"></div>
</div>
<div class="jp-volume-bar">
<div class="jp-volume-bar-value"></div>
</div>
</div>
</div>
</div>
</div>