jquery abort() ajax request를 다른 것을 보내기 전에
기준: jQuery를 사용하여 Ajax 요청 중단...inventory_search() - ajax 요청을 하기 전에 현재 요청을 확인하고 새 요청을 하기 전에 중단()하려면 어떻게 해야 합니까?아니면... 더 좋은 방법이 없을까요?
<script type="text/javascript">
$(function() {
$('form#internal_catalog').change(function() {
inventory_search();
});
});
function inventory_search() {
var search_data = $('form#internal_catalog').serialize();
var a = $.ajax({
type: 'post',
url: '/test.php',
data: search_data,
success: function(data) {
$('#catalog').html(data);
}
});
}
</script>
모든 요청의 배열 대기열을 만듭니다.그런 다음 기존 요청을 모두 중단해야 하는 지점을 찾으면 배열을 순환한 후 보류 중인 모든 요청에 대해 중단을 호출할 수 있습니다.꽤 간단할 겁니다.
다른 방법은 요청이 현재 진행 중인지 여부를 나타내는 내부 플래그를 유지하고 요청이 있을 경우 해당 플래그를 건너뛰는 것입니다.또는 당신이 적합하다고 생각하는 것을 처리합니다.
편집: 유사한 상황에 대해 이 SO 질문을 확인합니다.3개의 아약스 콜을 피하는 방법?
편집 2: 모든 아약스 호출을 추가할 수 있는 배열을 사용할 수 있습니다.그것은 본질적으로 단지 XmlHttpRequest를 하는 것이고 그것은 ajax call로부터 반환되는 것입니다. 그래서.
requests.push(
$.ajax({
type: 'post',
url: '/test.php',
data: search_data,
success: function(data) {
$('#catalog').html(data);
}
}));
이렇게 하면 모든 요청이 어느 곳에서 정의할 수 있는 요청 배열에 추가됩니다.그런 다음 보류 중인 모든 요청을 삭제하려면 배열을 순환한 후 중단을 호출하면 요청이 삭제됩니다.
for(var i = 0; i < requests.length; i++)
requests[i].abort();
또는 요청 여부를 나타내는 플래그인 함수 외부의 변수를 정의하기만 하면 됩니다.검색 데이터를 보다 구체적으로 지정하여 저장하고 동일한 데이터에 대해 보류 중인 요청이 있는 요청만 건너뛰고 다른 데이터에 대한 요청을 허용할 수도 있습니다.
그것이 당신을 시작하게 하기에 충분하길 바랍니다.
Spinon의 답변은 모든 ajax 쿼리를 중단하는 데는 좋지만 하나만 추적하는 데는 좋지 않습니다.
저는 종종 이런 일을 합니다.
var ajax_request;
function do_something()
{
if(typeof ajax_request !== 'undefined')
ajax_request.abort();
ajax_request = $.ajax({
type: 'post',
url: '/test.php',
data: search_data,
success: function(data) {
$('#catalog').html(data);
}
});
}
jQuery AjaxManager Plugin으로 꽤 쉽습니다.
$.manageAjax.create('unique_identifier',{
queue:'clear',cacheResponse:false,maxRequests:1,abortOld:true
});
jQuery.manageAjax.abort('unique_identifier');
jQuery.manageAjax.clear('unique_identifier');
jQuery.manageAjax.add('unique_identifier',{success: function(data) {}});
글로벌 변수를 사용하여 현재 요청의 핸들을 잡습니다.이 경우에는 다음과 같이 선언합니다.var a
기능을 벗어나 세계적으로 만들 수 있습니다.ajax를 호출하기 전에 null이 아님을 확인합니다.null이 아닌 경우abort
그렇지 않으면 새로운 아약스로 할당합니다.성공/완료 이벤트에서 변수 a를 지워야 합니다.최선의 해결책은 아니지만 가장 효과적입니다.
언급URL : https://stackoverflow.com/questions/3312960/jquery-abort-ajax-request-before-sending-another
'programing' 카테고리의 다른 글
스위프트에서 URL 유효성을 확인하는 방법은? (0) | 2023.09.15 |
---|---|
워드프레스 - 연락처 양식 7 특정 이메일로 보내지 않음 (0) | 2023.09.15 |
구조물 데이터의 16진수를 가져오는 방법 (0) | 2023.09.15 |
SQL Server 테이블에 "마지막으로 수정" 및 "생성" 열을 추가하려면 어떻게 해야 합니까? (0) | 2023.09.10 |
Microsoft Visual Studio 2013의 WinForms에서 엔티티 프레임워크 6 for MySql(C#) 활성화 (0) | 2023.09.10 |