刷新php输出而不重新加载页面

时间:2012-05-12 14:43:15

标签: php javascript jquery ajax

php脚本解析xml文件并在div:

内的页面上打印输出
<?php
$playlistUrl = 'http://url/to/playlist.xml';
$xmldata = file_get_contents($playlistUrl);

$xml = new SimpleXMLElement($xmldata);

foreach( $xml->trackList->track as $track ) {
    echo $track->title .' - '. $track->annotation .'<br>';
}
?>

我希望每25秒更新一次输出,而无需使用某种AJAX方法重新加载页面。我找到了一些设置时间间隔的代码示例:

// Poll the server each 60 seconds
window.setInterval(function() 
}, 60000);

setInterval(function(){
SomeAjaxFunction();
}, 1000);

如何在我的情况下正确实现这一点?

2 个答案:

答案 0 :(得分:6)

在这里查看我的答案。

Refresh page element after specific time

我已经回答了如何在特定时间后重新加载div,你可以调整一下以在一段时间后继续重新加载。

基础知识如下。

<div id="reload">
//your PHP code and content are here.
</div>

和你的jQuery代码。

<script>
setInterval(function() {
    $('#reload').fadeOut("slow").load('reponse.php').fadeIn("slow");
}, 10000);
</script>

答案 1 :(得分:1)

setTimeout在X秒后执行该函数...然后如果你使它递归,你将总是有X秒等待 代码执行完毕后。这比setInterval更受欢迎,后者恰好每隔X秒执行一次。

考虑服务器何时滞后以及load()需要几秒钟来实际加载......现在动画已经超时了一半并且正在重新加载/淡出... ..

function loopy_function() {
    // ajax call
    // on success 
    setTimeout(loopy_function, 1000 * 10 );

}

这里的关键是只在完成的响应上调用你的setTimeout。