シナリオ: 私は左側のセクション連絡先とグループを含むメッセージを送信すると、右の1は、会話の流れを持っているために、コンテナが含まれているメッセージのページを持っています。会話の流れは、ajax経由で読み込まれ、一方、他の人は連絡先やグループをクリックします。 this is what it looks likeは、5秒ごとに実行されるsetinterval関数を含むjavascriptファイルを使用して右側の内容を読み込み、新しいメッセージのデータベースをチェックし、会話divに表示するためのメッセージを取得します。jqueryのAJAX削除前の要求
問題: ページの最初の読み込み時に、連絡先またはグループをクリックすると、内容が読み込まれ、すぐにsetinterval機能が実行されることは明らかです。別の連絡先やグループをクリックしてコンテンツを再度読み込んでsetinterval関数をもう一度実行すると、chrome開発者ツールを見るときに2つのsetinterval関数が実行されるという問題があります。 As you can see in this image, there are two requests now, 1 for contact and 1 for group since i clicked a contact and a group。また、連絡先やグループをさらにクリックすると、リクエストは続けられます。
連絡先またはグループをクリックしたときにこれは、AJAXを介してローディングコンテンツのコードである:
$('.my_contacts a.list-group-item,.my_groups a.list-group-item,.new_message .list-group-item a').click(function(){
var href=$(this).attr('href');
$('.list-group-item').removeClass('active');
$(this).addClass('active');
$.ajax({
url:href,type:'post'
}).done(function(d){
$('#center-wing').html(d);
});
return false;
});
、これがロードされたAJAXデータ内のコンテンツである:
...more html content here
<script>
$(function(){
$.getScript("res/js/custom/in-page/message.js");
});
</script>
そしてこれはmessage.jsで5秒ごとにコードを実行してください:
if(notification == true){
checkNewMsgId=setInterval(function(){
$.ajax({
url:'message/check_new_message/' + recipient + '/' + type,
type:'post'
}).done(function(d){
if(d.length > 0){
var obj={};
lastmsg.addClass('hide');
reset_inactivity();
for(var o in d){
var date=new Date(d[o].SentDate),time=format_time(date);
bubble_tpl_left.find('.bubble').attr('data-pk',d[o].Remarks);
if(d[o].SenderId == recipient){
lastmessagedate=format_date(date);
lastmessagetime=time;
}
if(type == 'CustomGroup') bubble_tpl_left.find('.msg_sender').removeClass('hide').html(d[o].FirstName + " " + d[o].LastName);
send(d[o].Reply,time,bubble_tpl_left);
obj.title=name;
obj.body=d[o].Reply;
}
if(pagehidden == true){
ding.play();push_notify(obj);
}else blop.play();
}
});
},5000);
}
...長いポストみんなのために申し訳ありません。 Imは本当にこれに固執し、setintervalを実行する前に間隔をクリアしようとしました。
助けていただければ幸いです。
使用のsetTimeout()あなたはこの一度だけ – fahadash