jQuery: ajax 예외 잡기
실패한 많은 jQuery ajax 요청이 내 콘솔을 오류로 오염시키고 있습니다.이러한 콘솔 오류가 발생하는 코드를 살펴봅니다(jQuery 1.7.2, line 8240).
// Do send the request
// This may raise an exception which is actually
// handled in jQuery.ajax (so no try/catch here)
xhr.send( ( s.hasContent && s.data ) || null );
댓글이 왜 없는 건지 설명해주는 걸 알아봅니다.try
/catch
거기서. 하지만 비록 내가 명시적인 것이 있기는 하지만,error
나의 콜백 기능jQuery.ajax
요청합니다. 아직도 그 오류들을 처리하지 못하고 있습니다.jQuery.ajax
.
콘솔에 오류 메시지가 나타나지 않도록 jQuery ajax 오류를 처리하려면 어떻게 해야 합니까?
편집: 아래는 ajax 요청을 수행하는 내 코드 스니펫과 정확한 오류 메시지(Chrome):
$.ajax({
dataType: 'xml',
url: "./python/perfdata.xml?sid=" + (new Date()),
success: function (data) {
var protocols = $("Protocols", data).children();
parseData(protocols);
},
error: function (error) {
setTimeout(getData, 200);
}
});
다음은 크롬 에러 메시지입니다.
GET
http://zeus/dashboard/python/perfdata.xml?sid=Thu%20May%2024%202012%2016:09:38%20GMT+0100%20(GMT%20Daylight%20Time)
jquery.js:8240
사용자 지정 기능을 사용하여 작업을 수행할 수 있습니다.
$(document).ajaxError(ajaxErrorHandler);
그 처리기에 필요한 모든 것을 설정하고,
var ajaxErrorHandler = function () {
//do something
}
테스트를 위해 "보내기" 기능을 재정의하여 다음과 같이 테스트할 수 있습니다(크롬이 잘 작동하는 경우).
$(function() {
var xhr = null;
if (window.XMLHttpRequest) {
xhr = window.XMLHttpRequest;
}
else if(window.ActiveXObject('Microsoft.XMLHTTP')){
// I do not know if this works
xhr = window.ActiveXObject('Microsoft.XMLHTTP');
}
var send = xhr.prototype.send;
xhr.prototype.send = function(data) {
try{
//TODO: comment the next line
console.log('pre send', data);
send.call(this, data);
//TODO: comment the next line
console.log('pos send');
}
catch(e) {
//TODO: comment the next line
console.log('err send', e);
}
};
$.ajax({
dataType: 'xml',
url: "./python/perfdata.xml?sid=" + (new Date()).getTime(),
success: function (data) {
var protocols = $("Protocols", data).children();
parseData(protocols);
},
error: function (error) {
setTimeout(getData, 200);
}
});
});
시험을 보다
해봤어요?
$.ajaxSetup({
timeout:10000,
beforeSend: function(xhr) {
//
},
complete:function(xhr,status) {
//
},
error: function(xhr, status, err) {
switch (status){
case 'timeout': {}
case 'parseerror': {}
case 'abort': {}
case 'error': {}
default: {}
}
}
});
500개의 내부 서버 오류가 발생하고 있었는데 라인을 가리켰습니다.xhr.send( ( s.hasContent && s.data ) || null );
하지만 (내부 서버 오류로) apache 로그를 확인했을 때 다른 코드에 오류가 있었습니다.
그것도 한 번 확인 부탁드립니다.
언급URL : https://stackoverflow.com/questions/10740225/jquery-catch-ajax-exceptions
'programing' 카테고리의 다른 글
C 또는 C++ 파일을 스크립트로 실행 (0) | 2023.09.09 |
---|---|
선택적 통화 변수로 함수 만들기 (0) | 2023.09.09 |
오류 [ERR_REQUIR_ESM]: ES 모듈의 require()가 지원되지 않습니다. (0) | 2023.09.09 |
python mysql /mariaDB 데이터베이스 오류 (2013년, '쿼리 중 MySQL 서버와의 연결 끊김') (0) | 2023.09.09 |
도커 컨테이너의 실행 명령을 표시하는 방법 (0) | 2023.09.09 |