重新加载DIV而不重新加载整个页面?

时间:2016-01-14 12:42:29

标签: javascript php jquery ajax

我有一个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
        }
    }
?>

4 个答案:

答案 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>