2014-02-12 6 views
2

긴 폴링을 지원하는 REST 웹 서비스가 있습니다. Jquery Ajax 요청을 만든 경우 서버에 새로운 데이터가 있으면이 데이터가 나에게 전송됩니다. 서버로부터의 갱신이없는 경우, 요청은 보류 상태가됩니다. 이제 사용자가 갑자기 로그 아웃하면 요청을 취소하고 싶습니다. 요청 (보류 상태에 아직 원인) 서버에서 데이터를받지 않았기 때문에 나는보류중인 Jquery Ajax 호출을 취소하는 방법은 무엇입니까?

var request=$.ajax({ 
-------- 
- 
------- 
}); 

request.abort(); 

하지만 여기에 오류가 발생하고 같은 시도했다. 그래서 그것은 'null'입니다.

어떻게 Ajax 요청을 취소 할 수 있습니까?

+1

모두가 여기에 잠재적 인 중복을 볼 당신이 올바른지 무엇을하고 있는지 암시하는 것 같다 http://stackoverflow.com/questions/446594/abort-ajax-requests -using-jquery 설정 한 시간이 지나면 중단하려는 경우 요청시 시간 초과를 설정할 수도 있습니다. – DrLivingston

답변

0

중단은 jquery에 의해 오류로 간주되므로 실패 처리기에서 jqXHR의 statusText를 검사하여 중단되었는지 확인하고 이에 따라 처리해야합니다.

이 여기에 코드를 설명하기 위해입니다 :

var jqXHR = $.ajax({ 
    url: '...' 
}); 

// jqXHR.abort() is regarded as an error, so your logic for detecting 
// it should go in the fail handler. Here's how you could set this up: 
jqXHR.fail(function(args) { 
    if (jqXHR.statusText == 'abort') { 
     console.log('AJAX aborted'); 
     return; 
    } 

    // Other error processing goes here. 

}); 

// If pending, abort AJAX call 
if (jqXHR.state() == 'pending') { 
    jqXHR.abort(); 
}