요청에 대해 일부 jQuery 글로벌 Ajax 이벤트 처리기 사용 안 함
글로벌 Ajax 이벤트 핸들러가 정의되어 있다고 가정합니다(ajaxStart, ajaxStop 및 ajaxError).보통은 문제 없습니다만, 한 가지 요청으로 ajaxError 핸들러를 디세블로 하면서도 평소대로 ajaxStart 핸들러와 ajaxStop 핸들러를 실행하고 싶습니다.jQuery ajax 함수 문서에서는 "global" 파라미터를 false로 설정하고 $.ajax 함수에 전달하여 모든 글로벌 Ajax 이벤트핸들러를 디세블로 할 수 있지만 일부 글로벌핸들러를 디세블로 할 수 있는 방법은 기재되어 있지 않습니다.
ajaxError 함수에 전달된 ajaxSettings 객체의 "url" 속성에 대한 테스트를 수행함으로써 ajaxError 핸들러를 방지할 수 있지만, 이는 다소 서투른 것 같습니다.여기 $.ajax 함수가 호출된 위치를 보고 있는 누군가가 알 수 있는 ajaxError 함수의 실행을 비활성화하는 방법을 알고 있는 사람이 있습니까?
보고 싶은 사람이 있다면 간단한 예를 들어줄 수 있어요.
그것은 가능하고 어렵지 않다.
글로벌 에러 핸들러를 설정하기만 하면 됩니다(.ajaxError
jQuery가 제공할 수 있는 몇 가지 파라미터를 수신하려면 다음 절차를 따릅니다.
$("div.log").ajaxError(function(evt, xhr, settings) {
if(settings.suppressErrors) {
return;
}
// Normal processing
});
그 후, 추가 가능합니다.suppressErrors: true
AJAX 요구의 설정으로 이행합니다.또, 실패했을 경우, 에러 핸들러는 통상의 조작을 실시하지 않고 돌아옵니다.
실제 상황 보기.
많은 종류의 jquery/source https://github.com/jquery/jquery/blob/master/src/ajax.js#L579-582의 if 문을 보면 jquery 파라미터만으로는 문제를 해결할 수 없습니다.
제안사항은 다음과 같습니다.
Vaibhav Gupta가 말한 것처럼 글로벌을 false로 설정합니다.
글로벌 핸들러를 특정 ajax 콜의 로컬에 매핑하고 $.event.trigger 메서드를 사용하여 글로벌이벤트를 트리거합니다
샘플:
$.ajax({
url: "test.html",
global: false,
beforeSend: function(){$.event.trigger('ajaxStart');},
complete: function(){$.event.trigger('ajaxStop');},
error: your_error_handler
});
사용하려고 하다global: false
Ajax 요청에 다음과 같이 입력합니다.
$.ajax({
url: "test.html",
global: false,
// ...
});
출처: http://docs.jquery.com/Ajax_Events
글로벌 이벤트를 찾습니다.
설정할 수 있습니다.$.event.global.ajaxError
로.false
글로벌 오류 콜백을 일시적으로 호출하지 않도록 설정합니다.를 사용합니다.error
그리고.complete
플래그를 설정하기 위한 특별한 요청 콜백:
$.ajax({
url: 'some.domain.com/',
}).error(function(jXHR){
// Disable global error logging
$.event.global.ajaxError = false;
}).complete(function(){
// Enable global error logging
$.event.global.ajaxError = true;
});
예를 jsFiddle에서 사용할 수 있습니다.
제시되는 한, 저는 존의 제안을 여전히 선호한다는 것을 덧붙이고 싶습니다.이 방법에서는 실수로 글로벌핸들러가 디세블이 되려면 플래그를 1개 이상 잊어버릴 수 있는2개소에 설정해야 합니다.다른 이유는 Jon의 기술이 일부 내부 플래그를 설정할 수 없는 jQuery 릴리즈에서 작동하도록 보장해야 한다는 것입니다.
언급URL : https://stackoverflow.com/questions/7436195/disabling-some-jquery-global-ajax-event-handlers-for-a-request
'programing' 카테고리의 다른 글
스프링 부트 비활성화/오류 매핑 (0) | 2023.04.05 |
---|---|
같은 도메인에 다른 /서버를 배치하는 방법 (0) | 2023.04.05 |
Java prepared Statement를 사용하여 Postgres에 JSON 개체를 삽입하려면 어떻게 해야 합니까? (0) | 2023.04.05 |
c# 프로그램에 .json 파일 로드 (0) | 2023.04.05 |
AngularJS: DOM 변경을 적용한 후 요소의 끝까지 스크롤합니다. (0) | 2023.04.05 |