2011-11-12 4 views
1

확인을 대기 방지하기 위해 $ .post 취소, 그래서 일부 로컬 스토리지와 AJAX를 사용하여 전체 웹 응용 프로그램을 만드는 오전 등jQuery를이 -

오전 데 문제는 내가 클릭을 두 번이나 다시 탭을 클릭하고 때로는 빨리 .post 호출을 호출합니다.

문제는 콜백이 실행될 때 발생합니다. 마지막 콜이 돌아올 때까지 콜백이 다시 호출되고 서로 계속 덮어 씁니다.

분명히 그것이 문제입니다. 내가해야 할 일은 현재 POST 호출을 취소하고 마지막 콜백을받는 것입니다.

이 나는 ​​시도했다 :

// Make Call: 

if(call != undefined){ 
    call.abort(); 
} 
var call = $.post(url,{do:'stuff'},function(response){ 
    // callback stuff: 
},'json'); 

는 관계없이 정의되지 않은 말을 유지, 가능하면 차라리 아약스보다 .POST를 사용합니다.

미리 도움을 주셔서 감사합니다.

+0

'stuff'에 코드에 오타가 있습니까? – mjwills

+0

고쳐 주셔서 감사합니다. –

답변

1

클릭 할 때 클릭 이벤트를 간단히 바인딩 해제하고 콜백으로 다시 바인딩하십시오.

1

취소 할 경우 할 수있는 한 가지 방법은 보류중인 모든 XHR을 감지하지 못하게하는 것입니다. 카운터를 증가시키고 백엔드로 전달하여 이전 응답이 새로운 응답을 방해하지 못하도록합니다. 백엔드에 응답에 카운터 값을 포함시킨 다음 콜백은 덮어 쓰기 전에 로컬 카운터와 비교할 수 있습니다.