jQuery agax - statusCode() 콜백이 호출될 때 오류() 콜백 방지
백엔드 서비스에 연결하기 위해 jQuery.jax()를 사용하고 있습니다.error() 핸들러와 statusCode() 핸들러를 구성했습니다.둘 다 잘 작동하지만, statusCode 핸들러가 실행되면 오류 핸들러도 실행됩니다(실제로 오류 핸들러가 먼저 실행됨).저는 이런 일이 일어나지 않았으면 좋겠어요.오류 처리기 코드를 해킹하지 않아도 가능하다고 생각합니다.
내 코드는 다음과 같습니다.
$.ajax({
...
error: function(...) {
// process a general type of error here
},
statusCode: {
401: function() {
// process a specific authentication failure
}
}
});
그러면 HTTP 상태 코드가 401일 때 오류() 핸들러가 발생하는 것을 방지하려면 어떻게 해야 합니까?
일부러 읽어주셔서 감사합니다!
오류 콜백 내부의 상태 코드를 쉽게 확인할 수 있습니다.첫 번째 매개 변수는 다음과 같아야 합니다.XMLHttpRequest(또는)jqHXRjQuery) 개체 버전에 따라 다릅니다.그에 따라 오류 핸들의 상태 코드에 대한 'status' 속성을 확인합니다.
예.
error: function(a, b, c){
if(a.status != 401){
// handle other errors except authentication
}
}
해킹 없이jQuery.ajax,그럴수는 없어요.저에게 jQuery의 아약스 방법은 도서관의 약점 중 하나입니다.좀 더 합리적인 요청 처리를 위해 슈퍼에이전트나 다른 독립 실행형 라이브러리를 조사하는 것이 좋습니다.
일반 이벤트 처리기를 실행하지 않을 상태 코드를 하드 코딩해야 하는 이전 해결 방법을 개선합니다.
제 생각에는 Send가 다른 목적으로 덮어쓰기되기 전에 오류 처리기를 편집하는 것이 더 안전합니다. 따라서 이러한 호출에 대해 일반 오류 처리기를 실수로 실행할 수 있습니다. (누군가가 오류 콜백을 덮어쓰면 오류 처리에 영향을 줄 것으로 예상되며, Send callback을 보내기 전에 수정하면 그렇지 않습니다.)
따라서 다음과 같은 이점을 얻을 수 있습니다.
function ajaxError (jqXHR, textStatus, errorThrown)
{
if (jqXHR.status in this.statusCode) return;
// Handle generic events here.
}
ajaxSetup 및 beforeSend를 사용하여 Ajax 요청의 오류 처리기를 자동으로 조정할 수 있습니다.
$.ajaxSetup({
beforeSend: function(jqXHR, settings) {
if (typeof settings.error === 'function') {
var errorfunc = settings.error;
settings.error = function(jqXHR2, textStatus, errorThrown) {
if (jqXHR2.status !== 401) errorfunc(jqXHR2, textStatus, errorThrown);
};
}
}
});
저 같은 경우에는 효과가 있습니다.
이 게시물에서 오류 방법으로 상태 코드를 처리하는 것에 대한 답변을 확인하십시오: jquery agax 상태 코드를 가져오는 방법.
언급URL : https://stackoverflow.com/questions/9465067/jquery-ajax-avoiding-error-callback-when-statuscode-callback-invoked
'programing' 카테고리의 다른 글
| C에서 문자열 리터럴의 "수명" (0) | 2023.08.31 |
|---|---|
| mariaDB에 사용할 cnf 파일을 지정하는 곳은 어디입니까? (0) | 2023.08.31 |
| Mariadb 드라이버 Aurora IAM 자격 증명 유형 액세스가 사용자에 대해 거부되었습니다(암호 사용: YES). (0) | 2023.08.31 |
| apt-get과 함께 설치되었음에도 도커 명령을 찾을 수 없습니다. (0) | 2023.08.31 |
| 로컬 호스트에 대해 신뢰할 수 있는 자체 서명 SSL 인증서 생성(Express/Node와 함께 사용) (0) | 2023.08.31 |