2013-03-18 4 views
1

페이지 방향 재 지정에서 모든 AJAX 요청을 중단하는 방법에 대해이 answer을 따라했습니다. 기본적으로 ajaxSend를 사용하여 xhr 요청 객체를 배열에 추가 한 다음 배열에서 해당 객체를 제거하기 위해 ajaxComplete를 수행 한 다음 페이지가 리디렉션되면 해당 배열을 반복하고 브라우저가 아직 대기중인 각 요청을 중단합니다.Backbone.js로 완료되기 전에 AJAX 호출이 중단되었습니다.

$ .ajax ({})를 사용하는 모든 일반 AJAX 요청에서 정상적으로 작동합니다. 그러나 Model.save()와 같이 Backbone AJAX 요청이 호출되면 window.onbeforeunload 함수는 아무 일도 일어나기 전에 실행되고 model.save()가 서버에 이벤트가 전달되기 전에 중단됩니다.

누구든지이 문제를 해결하는 방법이나 window.onbeforeunload 함수가 호출되는 이유에 대한 아이디어가 있습니까?

var xhrPool = []; 
$.xhrPool = {}; 
$.xhrPool.abortAll = function() { 
    $.each(xhrPool, function (idx, jqXHR) { 
     jqXHR.abort(); 
    }); 
    xhrPool.length = 0; 
}; 

$(document).ajaxSend(function (e, jqXHR, options) { 
    xhrPool.push(jqXHR); 
}); 

$(document).ajaxComplete(function (e, jqXHR, options) { 
    xhrPool = $.grep(xhrPool, function (x) { 
     return x != jqXHR; 
    }); 
}); 

window.onbeforeunload = function() { 
    $.xhrPool.abortAll(); 
}; 

답변

0

를 저장하는 시간에 대기 플래그를 사용하여 시도했다 : 여기

내가 링크 된 답변에서 가져온 코드입니다?

이와같이 model.save (data, {wait : true});

희망이 도움이됩니다.

관련 문제