[英]How to slide in only new posts jquery
Hey guys, I'm using jquery to load posts from another page every 5 seconds by using this code: 大家好,我正在使用jquery通过以下代码每5秒从另一个页面加载一次帖子:
<script>
jQuery(function($){
$('#loaddiv').show();
})
var auto_refresh = setInterval(
function(){
$('#loaddiv').hide().load('reload.php').show();
}, 5000);
</script>
And here's reload.php: 这是reload.php:
<?php
session_start();
ini_set('display_errors', 'On');
error_reporting(E_ALL);
$mysql=mysql_connect('localhost','***','***');
mysql_select_db('jmtdy');
$result=mysql_query("select * from users where username='".$_SESSION['username']."'") or die(mysql_error());
$dbarray=mysql_fetch_assoc($result);
$id=$dbarray['id'];
$result1=mysql_query("select * from friendship where userid='".$id."'") or die(mysql_error());
$dbarray1=mysql_fetch_assoc($result1);
$userid=$dbarray1['friendid'];
$result2=mysql_query("select * from posts where userid='".$userid."' or userid='".$id."' ORDER BY id DESC LIMIT 20") or die(mysql_error());
if(mysql_num_rows($result2) >=1) {
while($dbarray2=mysql_fetch_assoc($result2)) {
echo '<div class="homestatus"><a class="homeusername" href="account.php?user='.$dbarray2['username'].'">'
.$dbarray2['fname'].' '.$dbarray2['lname'].':<a><p class="homepost">'
.$dbarray2['post'].'</p><p class="hometime">'.$dbarray2['time'].'</p></div>';
}
}
else {
echo '<p class="homestatus">No new updates from your friends.</p>';
}
?>
It's working perfectly but my question is, how can I slide in the new results sort of how Quora slides in new answers in questions using jquery? 它运行正常,但是我的问题是,如何才能在新结果中进行滑动,例如Quora如何使用jquery在问题中的新答案中滑动?
Ok I came up with this: 好的,我想到了这个:
<script>
jQuery(function($){
$('#loaddiv').show();
})
var auto_refresh = setInterval(
function(){
var timestamp = new Date().getTime() - 5000;
// get posts for the last 5 seconds only
var new_posts = $.load('reload.php?time=' + timestamp);
$('#loaddiv').append(new_posts).show('slow');
}, 5000);
</script>
and this: 和这个:
<?php
session_start();
ini_set('display_errors', 'On');
error_reporting(E_ALL);
$mysql=mysql_connect('localhost','***','***');
mysql_select_db('jmtdy');
$result=mysql_query("select * from users where username='".$_SESSION['username']."'") or die(mysql_error());
$dbarray=mysql_fetch_assoc($result);
$id=$dbarray['id'];
$result1=mysql_query("select * from friendship where userid='".$id."'") or die(mysql_error());
$dbarray1=mysql_fetch_assoc($result1);
$userid=$dbarray1['friendid'];
$time=mysql_real_escape_string($_GET['time']);
$result2=mysql_query("select * from posts where userid='".$userid."' or userid='".$id."' and time='".$time."' ORDER BY id DESC LIMIT 20") or die(mysql_error());
if(mysql_num_rows($result2) >=1) {
while($dbarray2=mysql_fetch_assoc($result2)) {
echo '<div class="homestatus"><a class="homeusername" href="account.php?user='.$dbarray2['username'].'">'.$dbarray2['fname'].' '.$dbarray2['lname'].':<a><p class="homepost">'.$dbarray2['post'].'</p><p class="hometime">'.$dbarray2['time'].'</p></div>';
}
}
else {
echo '<p class="homestatus">No new updates from your friends.</p>';
}
?>
But I get this error: Notice: Undefined index: time in /var/www/Cliproid/reload.php on line 13 但我收到此错误:注意:未定义的索引:第13行的/var/www/Cliproid/reload.php中的时间
I would maybe use a unique(auto_increment) id, or a timestamp stored somewhere in the script. 我可能会使用唯一的(auto_increment)id或在脚本中某个位置存储的时间戳。
Then use that identifier when making your request, so you only fetch results > last id/timestamp. 然后在发出请求时使用该标识符,因此您仅获取结果>最后一个ID /时间戳。 Then with that result, use $('#loaddiv').prepend(data).fadein() to insert that data to the beginning (top) of the list.
然后,使用该结果,使用$('#loaddiv')。prepend(data).fadein()将数据插入列表的开头(顶部)。
I do not know how Quora works, but use some of the effect in jQuery instead of plain show() function. 我不知道Quora的工作原理,但是使用jQuery中的某些效果而不是普通的show()函数。 Try 'animate' or something different http://api.jquery.com/category/effects/
尝试“设置动画”或其他不同的http://api.jquery.com/category/effects/
<script>
jQuery(function($){
$('#loaddiv').show();
})
var auto_refresh = setInterval(
function(){
var timestamp = new Date().getTime() - 5000;
// get posts for the last 5 seconds only
var new_posts = $.get('reload.php?time=' + timestamp);
$('#loaddiv').append(new_posts).show('slow');
}, 5000);
</script>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.