jQuery AJAX 호출의 'finally'와 유사한 호출이 있습니까?
jQuery AJAX 호출에 Java의 'finally' 아날로그가 있습니까?여기 코드가 있어요항상 예외를 두지만 항상 then() 메서드로 보내고 싶습니다.
call.xmlHttpReq = $.ajax({
url : url,
dataType : 'json',
type : 'GET'
}).always(function(processedDataOrXHRWrapper, textStatus, xhrWrapperOrErrorThrown) {
throw "something";
}).then(function() {
alert("i want to always run no matter what");
});
done(), complete() 및 다른 한쪽을 항상 사용하려고 했지만 아무 것도 작동하지 않습니다.
JSFiddle은 다음과 같습니다.
다음의 예를 참조해 주세요.
$.ajax({
type: "GET",
dataType: dataType,
contentType: contentType,
async: TRUE,
url: $('html form:nth-child(1)').attr('action') + "?" $('html form:nth-child(1)').serialize(),
success: function(data) {
console.log("FUNFOU!");
},
error: function(data) {
console.log("NÃO FUNFOU!");
},
complete: function(data) {
console.log("SEMPRE FUNFA!");
//A function to be called when the request finishes
// (after success and error callbacks are executed).
}
});
.always()
작동해야 합니다.http://api.jquery.com/jQuery.ajax/ 의 「JQXHR 오브젝트」섹션을 참조해 주세요.
jqXHR.always(function(data|jqXHR, textStatus, jqXHR|오류)느려짐) { } ; 완전한 콜백옵션의 대체 구성 요소로서 폐지된 .complete() 메서드가 .always() 메서드로 대체됩니다.
성공한 요구에 대한 응답으로 함수의 인수는 .done()의 인수와 동일합니다.데이터, textStatus 및 jqXHR 객체입니다.실패한 요청의 인수는 .fail() 인수와 동일합니다.jqXHR 오브젝트, textStatus 및 error던졌습니다. 지연을 합니다.구현에 대한 자세한 내용은 항상()을 참조하십시오.
http://api.jquery.com/deferred.always/ 도 참조해 주세요.
jQuery의 약속 구현은 전달된 메서드에서 발생한 오류를 처리하지 않기 때문에 다음 제안은 jQuery에서 작동하지 않습니다.jQuery가 약속/A+에 준거한 경우 어떤 일이 일어날 수 있는지 예시로 여기에 남겨두겠습니다.Bergi가 올바르게 지적했듯이, 당신은 당신의 코드를 당신의 try catch block으로 수동으로 포장해야 합니다.
call.xmlHttpReq = $.ajax({
url : url,
dataType : 'json',
type : 'GET'
}).then(function(processedDataOrXHRWrapper, textStatus, xhrWrapperOrErrorThrown) {
throw "something";
}).always(function() {
alert("i want to always run no matter what");
});
jquery의 약속이 항상 지원되는지는 모르겠지만, 다른 방법은 success Handler와 error Handler 둘 다와 같은 함수를 사용하는 것입니다.
call.xmlHttpReq = $.ajax({
url : url,
dataType : 'json',
type : 'GET'
}).then(function(processedDataOrXHRWrapper, textStatus, xhrWrapperOrErrorThrown) {
throw "something";
}).then(function() {
alert("i want to always run no matter what");
},
function() {
alert("i want to always run no matter what");
});
jQuery 3.0 이후를 사용하는 사용자를 위한 참고 사항
폐지 통지:jqXHR.success(), jqXHR.error() 및 jqXHR.complete() 콜백은 jQuery 3.0에서 삭제됩니다.대신 jqXHR.done(), jqXHR.fail() 및 jqXHR.always()를 사용할 수 있습니다.
서버에 의존한 버그 에이잭스가 있습니다.상태를 체크할 때 "complete"가 최선입니다.일종의 "Success"와 "error" 등이 PUT, POST 및 GET의 100%가 아닙니다.예를 들어보겠습니다.
$.ajax({
url: '/api/v2/tickets/123456.json',
....
....
....
complete: function(data) {
if (data.statusText == "success") {
console.log("Sent successfully");
} else {
console.log("Not Sent");
}
}
});
영어가 서툴러!응원;-)
모든 ajax 요청에 대해 하나의 코드 정의를 원하는 경우 다음과 같이 할 수 있습니다.
$(document).ajaxComplete(function () {
console.log('ajax complete on doc');
})
언급URL : https://stackoverflow.com/questions/15925522/is-there-any-analog-to-a-finally-in-jquery-ajax-calls
'programing' 카테고리의 다른 글
Angularjs $http 투고 파일 및 폼 데이터 (0) | 2023.04.05 |
---|---|
Typescript에서 인터페이스 또는 클래스를 사용하는 경우 (0) | 2023.04.05 |
하위 폴더를 보기 위해 WordPress .htaccess 구성 (0) | 2023.04.05 |
Java에서 두 JSON 파일을 비교하는 가장 좋은 방법 (0) | 2023.04.05 |
모델을 통해 입력 자리 표시자 값을 변경하시겠습니까? (0) | 2023.04.05 |