简体   繁体   English

如何仅在新帖子中滑动jQuery

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM