>  기사  >  웹 프론트엔드  >  JQUERY의 $.AJAX request_jquery를 종료하는 방법을 가르쳐주세요.

JQUERY의 $.AJAX request_jquery를 종료하는 방법을 가르쳐주세요.

WBOY
WBOY원래의
2016-05-16 15:14:201143검색

최근 사용자가 Ajax 요청을 자주 클릭하면 두 가지 문제가 발생한다는 사실을 발견했습니다.

1. 연속으로 5개의 Ajax 요청을 클릭하면 처음 4개는 실제로 유효하지 않게 종료되어 리소스를 절약합니다.

2. 더 심각한 문제는 마지막으로 보낸 요청에 대한 응답이 마지막이 아닐 수 있어 혼란이 발생할 수 있다는 점입니다. 전송된 요청과 응답을 유지하려면 대기열도 필요합니다.

실제로 큐 구현을 설계했는데 나중에 보니 jQuery가 직접 중단 메서드를 사용하므로 이렇게 복잡한 구현이 필요하지 않습니다. 결국 다른 작업이 완료되기를 기다리고 있습니다.

jquery를 사용하여 ajax 요청, $.get, $.post, $.ajax 등을 보내는 것은 정말 편리하지만 때로는 Ajax 요청을 중간에 종료해야 하는 경우도 있습니다.

예를 들어 채팅을 위해 Comet을 사용할 때 서버는 일반적으로 요청을 보낸 후 링크를 ​​새로 고치고 수십 초 후에 데이터를 반환합니다. 서버가 30초마다 링크를 새로 고친다고 가정해 보겠습니다. Ajax 요청을 10초에 중지하려면 어떻게 해야 할까요?

코드부터 시작해서 나중에 설명하겠습니다

var ajaxGet = $.get(“comet_server.php”,{id:1},function(data){
….//一些操作
});
ajaxGet.abort();

위 코드는 두 가지 지식 포인트로 구성됩니다.

1. $.get이 반환하는 데이터 유형은 XMLHttpRequest입니다. 매뉴얼을 참조하세요. ($.post, $.ajax, $.getJSON, $.getScript도 마찬가지입니다.)

2. XMLHttpRequest 객체에는 abort() 메서드가 있습니다

참고: abort() 후에 ajax 요청은 즉시 중지되지만 후속 function()은 계속 실행됩니다. 작업 수행을 피하고 싶다면 function() 시작 부분에 판단을 추가하면 됩니다

var ajaxGet = $.get(“comet_server.php”,{id:1},function(data){
if(data.length == 0) return true;
….//一些操作
});
ajaxGet.abort();

Ajax 요청 종료:

var request = $.get(“ajax.aspx”,{id:1},function(data){
  //do something
});
//终止请求动作.
request.abort();

중복 요청 방지:

var request;
if(request != null)
  request.abort();
request = $.get(“ajax.aspx”,{id:1},function(){
  //do something
});
ajax & setTimeout实现 secondTry 在等待一秒之后将firstTry的ajax终止:
var firstTry = $.ajax(
 //do something
 );
var secondTry = setTimeout(function(){alert(‘ok');firstTry.abort()},1000);

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.