Scenrio : 사용자가 투표 할 수있는 웹 앱이 있으며 다음 투표로 진행할 때 모든 것이 ajax로로드됩니다. 사용자는 또한 이전 투표를 클릭 할 수 있으며 투표 세부 정보가 ajax를 사용하여 페이지에로드됩니다. 내가 가진 문제는 사용자가 이전 투표를 통해 클릭하면 결국 페이지가 일시적으로 정지된다는 것입니다. 이것은 7/8 클릭 즈음에 발생합니다. 처음 몇 번 클릭하면 모든 새로운 정보가 dom에 매우 빠르게로드되고 모든 것이 좋습니다. 페이지가 고정되면 20-25 초 후에 고정 해제됩니다.
이것은 클릭을 처리하는 js func이며, js.erb 파일을 사용하여 새 정보를 dom에로드합니다.
$('.vote.complete').click(function()
{
whence = "toCompleted";
vote_id = $(this).data('vote_id');
cid = $(this).data('campaign_id');
c_title = $('#outfitPair'+cid).data('campaign_title');
u_id = $('#outfitPair'+cid).data('other_id');
//_gaq = window._gaq;
//if(_gaq != undefined){
// _gaq.push(['_trackEvent', 'ViewPreviousVote', c_title, u_id]);
//}
$('#outfitPair'+cid).find('.button.vote').removeClass('to-vote');
$(this).addClass('to-vote');
$.get('/campaigns/new_pair?whence='+whence+'&vote_id='+vote_id)
return false;
});
js.erb 파일은 살펴보기에 상당히 많습니다. 나는 조사 할 수있는 가능한 원인에 대한 제안을 다소 찾고 있지만,이 작은 정보가 주어지면 정확한 답변을 기대하지 않습니다.
편집 : 나는 문제에 대한 단서를 찾았다 고 생각합니다. 이전 투표를 클릭 할 때마다 ajax 호출 횟수가 2 배 증가하는 것처럼 보입니다.
결정된. 내 js.erb 파일에서 클릭 핸들러를 두 번째로 언급했는데 이전 버전이 더 이상 남아있을 때 더 이상 바인딩되지 않았다고 생각했습니다. 클릭 처리기의 양이 투표를 클릭 할 때마다 두 배가되기 때문에 이로 인해 여러 개의 ajax 호출이 발생했습니다. 콜백에서 클릭 핸들러를 제거한 후 모든 것이 예상대로 작동합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다