2012-08-04 36 views
1

我想知道是否有可能将Ajax轮询插入到当前代码中,因此用户发布每隔数秒钟更新一次以显示添加到数据库的任何新内容,例如其状态和添加的新评论数量以及我制作的Feed中的时间戳。这是我到目前为止。插入Ajax轮询

<script> 
$(document).ready(function(){ 
    make_call(); 
    $("form#myform").submit(function(event) { 
     event.preventDefault(); 
     var content = $("#toid").val(); 
     var newmsg = $("#newmsg").val(); 

     $.ajax({ 
      type: "POST", 
      url: "insert.php", 
      cache: false, 
      dataType: "json", 
      data: { toid: content, newmsg: newmsg }, 
      success: function(response){ 
       $("#homestatusid").prepend("<div id='divider-"+response['streamitem_id']+"'><div class='userinfo'><a href='/profile.php?username="+response['username']+"'><img class='stream_profileimage' style='border:none;padding:0px;display:inline;' border=\"0\" src=\"imgs/cropped"+response['id']+".jpg\" onerror='this.src=\"img/no_profile_img.jpeg\"' width=\"40\" height=\"40\" ></a><div style='cursor:pointer;position:relative;top:0px;float:right;padding-right:5px;' onclick=\"delete_('"+response['streamitem_id']+"');\">X</div><a href='/profile.php?username="+response['username']+"'>"+response['first']+" "+ response['middle']+" "+response['last']+"</a><span class='subtleLink'> said</span><br/><a class='subtleLink' style='font-weight:normal;'>"+response['streamitem_timestamp']+"</a><hr>"+newmsg+"<div style='height:20px;' class='post_contextoptions'><div id='streamcomment'><a style='cursor:pointer;' id='commenttoggle_"+response['streamitem_id']+"' onclick=\"toggle_comments('comment_holder_"+response['streamitem_id']+"');clearTimeout(streamloop);swapcommentlabel(this.id);\">Write a comment...</a></div><div id='streamlike'><a id='likecontext_"+response['streamitem_id']+"' style='cursor:pointer;' onClick=\"likestatus("+response['streamitem_id']+",this.id);\"><div style='width:50px;' id='likesprint"+response['streamitem_id']+"'>Like</div></a><div style='width:50px;' id='likesprint"+response['streamitem_id']+"'></div></div><div id='streamdislike'><a id='dislikecontext_"+response['streamitem_id']+"' style='cursor:pointer;' onClick=\"dislikestatus("+response['streamitem_id']+",this.id);\"><div style='width:70px;' id='dislikesprint"+response['streamitem_id']+"'>Dislike</div></a><div style='width:70px;' id='dislikesprint"+response['streamitem_id']+"'></div></div></div><div class='stream_comment_holder' style='display:none;' id='comment_holder_"+response['streamitem_id']+"'><div id='comment_list_"+response['streamitem_id']+"'><table width=100%><tr><td valign=top width=30px><img class='stream_profileimage' style='border:none;padding:0px;display:inline;' border=\"0\" src=\"imgs/cropped"+response['id']+".jpg\" onerror='this.src=\"img/no_profile_img.jpeg\"' width=\"40\" height=\"40\" ></a><td valign=top align=left><div class='stream_comment_inputarea'><input type='text' name='content' style='width:100%;' class='input_comment' placeholder='Write a comment...' onkeyup='growcommentinput(this);' autocomplete='off' onkeypress=\"if(event.keyCode==13){addcomment("+response['streamitem_id']+",this.value,'comment_list_"+response['streamitem_id']+"',"+response['id']+",'"+response['first']+" "+ response['middle']+" "+response['last']+"');this.value='';}\"><br/></div></div>"); 
      } 
     }); 
     return false 
    }); 
}); 
</script> 

回答

1
setInterval(function(){ 
    $.ajax({ 
      type: "POST", 
      url: "insert.php", 
      success : function(response){ 
        //update target area with response 
      } 
    }); 
}, 10000); //try update every 10 seconds 
+0

谢谢罗宾。如预期的那样非常直截了当 – dave 2012-08-04 14:53:43

+0

一个问题。我有一个评论下降框..并关闭它时,它的东西。 – dave 2012-08-04 14:55:19

+0

@dave:我无法想象你的保管箱是什么意思。你的意思是下拉,像“选择”?有没有附加的事件处理程序? – 2012-08-04 14:57:17

1

试试这个:

var intervalid = window.setInterval(function() { 
    //Your ajax query here 
}, intervalInMilliSec); 

要取消间隔,使用此:

window.clearInterval(intervalid);