2013-04-24 2 views
3

jQuery에는 중단 요청을 시도하는 데 사용할 수있는 일부 중단 API가 있습니다. jQuery가 실제로 Ajax 요청 자체를 중단 할 수 있습니까?jQuery aborting request

예를 들어 비행 중에 Ajax 요청이 많고 jQuery가 다른 모든 것을 중단하기로 결정한 이상한 메시지가 다시 발생한다고 가정 해 보겠습니다.

이렇게 될 수 있습니까?

답변

5

timeout 옵션을 제외하고 일반적으로 jQuery는 결정하지 않습니다. 당신은를 결정합니다.

루틴은 항상 $.ajax()이 반환하는 참조를 갖습니다.

의미 : $.ajax()을 호출하는 대신 xhr = $.ajax() 대신이 작업을 수행하십시오.

$.ajax()은 jqXHR 객체를 반환합니다.이 객체는 Ajax 기능의 jQuery 래퍼입니다. 당신이 xhr을 가지고, 당신은 당신이 원하는 어디서든 xhr.abort()를 호출 할 수 있습니다 지금 http://api.jquery.com/jQuery.ajax/

를 참조하십시오.

실제로 디자인하는 방법에 따라 다르지만, .abort() 호출을 사용하십시오. 다음은 하나의 가능한 사용 사례 일 수 있습니다.

폴링 기능 하나와 사용자가 너무 오래 유휴 상태인지 확인하는 또 다른 기능.

유휴 상태 인 경우 폴링 아약스를 중단 한 다음 세션이 종료되었다는 경고 메시지를 사용자에게 표시합니다.

예 사용 사례 :

var mainXHR; // this is just one reference. 
      // You can of course have an array of references instead 

function mainPollingFunction() { 
    mainXHR = $.ajax({ 
     url: 'keepAlive.php', 
     // more parameters here 
     timeout: 10000, // 10 seconds 
     success: function() { 
      // server waits 10 seconds before responding 
      mainPollingFunction(); // initiate another poll again 
     } 
    }); 
} 

// Let's say this function checks if the user is idle 
// and runs when a setTimeout() is reached 
function otherFunction() { 
    if (/* if user is idle */) { 
     if (mainXHR) mainXHR.abort(); // abort the ajax in case it's still requesting 
    } 
}