这是我的剧本:
<script type="text/javascript">
var auto_refresh = setInterval(
function () {
$('#alert_div').load('/check_messages.php?timestamp=<?php echo TIMESTAMP2;?>').fadeIn("slow");}, 180000);
$("html,body").scrollTop("alert_div",0);
</script>
实际上,每件事都很好但是...... 如您所见,每3分钟脚本加载check_messages.php文件。如果用户有新消息消息check_messages.php 输出信息,否则输出为空:
echo "";
如果php脚本输出不为空,我需要$("html,body").scrollTop("alert_div",0);
exetutes,仅用以防万一。
答案 0 :(得分:2)
试试:
<script type="text/javascript">
var auto_refresh = setInterval(
function () {
$('#alert_div').load('/check_messages.php?timestamp=<?php echo TIMESTAMP2;?>', function(response){
if(resonse != '')
$("html,body").scrollTop("alert_div",0);
}).fadeIn("slow");}, 180000);
</script>
答案 1 :(得分:1)
load函数将函数作为参数,当请求以响应文本作为第一个参数完成时调用该函数。您可以检查此回调函数中的响应是否为空,如果不是则滚动到顶部。
load
之类的请求是异步处理的,这意味着紧接其后的代码将在调用完成之前运行。如果您希望在呼叫完成后发生某些事情,则需要将其包含在完成回调中。出于这个原因,我不希望你的fadeIn调用工作,因为我认为load函数不会返回包含的元素。当load
调用返回时,您的文本未包含在文档中。
我还冒昧地将代码从匿名函数中移到一个名为check_messages
的函数中。在您的代码中,您在setInterval
调用之外滚动到顶部,因此它立即被执行,而不是在检查消息时。
<script type="text/javascript">
function check_messages() {
$('#alert_div').load('/check_messages.php?timestamp=<?php echo TIMESTAMP2;?>',
function(responseText, textStatus, XMLHttpRequest) {
if(responseText != "") {
$("html,body").scrollTop("alert_div",0);
}
}).fadeIn("slow");
}
var auto_refresh = setInterval(check_messages, 180000);
</script>
答案 2 :(得分:0)
你需要使用类似的东西:
$.get('/check_messages.php?timestamp=<?php echo TIMESTAMP2;?>', function(data) {
if(data) {
$('#alert_div').replace(data);
$("html,body").scrollTop("alert_div",0);
}
});
代替。
答案 3 :(得分:0)
我相信您应该使用.load的其他版本 - http://api.jquery.com/load/。 在回调中,您应该检查响应中的任何天气,并根据该条件执行操作。