这就是这种情况。我正在构建一个页面来托管托管在 Icecast 服务器上的广播流。我让播放器工作得很好,并拼凑了一个 PHP 脚本来从服务器中提取和解析各种数据点。当前曲目、听众人数等信息。
这就是问题所在。首次打开页面时它加载正常,但我无法找到一种方法让这些变量每 5-10 秒左右更新一次,并在不完全重新加载页面的情况下使用新信息更新页面(这是毕竟广播电台,每 10 秒重新缓冲一次电台是不可行的。
在从代码中删除了各种尝试之后,这就是我到目前为止所拥有的。有任何想法吗?我已经看到它针对一两个变量完成了,但我在这里几乎有十几个......
<div id="current_song"></div>
<script language="javascript" src="http://code.jquery.com/jquery-1.8.2.min.js"></script>
<script language="javascript">
{
$.ajax({
type: 'POST',
url: 'script.php',
data: 'getLatestInfo',
dataType: 'json',
cache: false,
success : function(dp){
$.getJSON('script.php', function(dp) {
//'data' will be the json that is returned from the php file
$.("#current_song").html("dp[9]");
});
getlatest();
};
});
}
</script>
这是PHP解析器
<?php
Function getLatestInfo() {
$SERVER = 'http://chillstep.info:1984';
$STATS_FILE = '/status.xsl?mount=/test.mp3';
$LASTFM_API= '27c480add2ca34385099693a96586bd2';
//create a new curl resource
$ch = curl_init();
//set url
curl_setopt($ch,CURLOPT_URL,$SERVER.$STATS_FILE);
//return as a string
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
//$output = our stauts.xsl file
$output = curl_exec($ch);
//close curl resource to free up system resources
curl_close($ch);
//loop through $ouput and sort into our different arrays
$dp = array();
$search_for = "<td\s[^>]*class=\"streamdata\">(.*)<\/td>";
$search_td = array('<td class="streamdata">','</td>');
if(preg_match_all("/$search_for/siU",$output,$matches)) {
foreach($matches[0] as $match) {
$to_push = str_replace($search_td,'',$match);
$to_push = trim($to_push);
array_push($dp,$to_push);
}
}
$x = explode(" - ",$dp[9]);
echo json_encode($dp);
}
?>
我知道它看起来还不漂亮,但这就是 CSS 的用途吗?
有任何想法吗?本质上,我需要 PHP 脚本重新运行、更新变量并重建文本输出,而无需触及音频标签。