jQuery.ajax 처리 계속 응답: "success:" vs.done?
및몇 주 콜이 후 를 '두 가지 . "jQuery" AJAX"입니다.콜이 이루어지면 스크립트를 '계속'할 수 있는 두 가지 방법을 알게 되었습니다.success:
★★★★★★★★★★★★★★★★★」.done
.
jQuery 문서의 개요에서 얻은 내용은 다음과 같습니다.
.done(): 설명:지연 개체가 확인되면 호출할 핸들러를 추가합니다.
success: (.success() 옵션):요구가 성공했을 때 호출되는 함수.
따라서 둘 다 AJAX 콜이 완료/해결된 후에 작업을 수행합니다.이거 랜덤으로 써도 돼요?어떤 점이 다릅니까?또, 어느 쪽이 다른 쪽이 아닌 어느 쪽이 사용되고 있을까요?
success
는 jQuery에서 성공 콜백의 전통적인 이름으로, ajax 콜의 옵션으로 정의되어 있습니다. 「」가 있기 에, 「」는$.Deferreds
더 콜백이 있습니다.done
는 성공 은, 임의의 「콜백」, 「할 수 입니다.deferred
.
예를 들어 성공:
$.ajax({
url: '/',
success: function(data) {}
});
예를 들어 다음과 같습니다.
$.ajax({url: '/'}).done(function(data) {});
★★★★★의 장점done
is is is is of is 의 반환값이$.ajax
이제 어플리케이션의 다른 장소에 구속할 수 있는 지연된 약속이 되었습니다.예를 들어, 이 Ajax 전화를 몇 군데 다른 곳에서 걸려고 합니다.콜을 Ajax를 를 설정할 수 .$.ajax
.done
,fail
,then
, 또는그 외의 것에 해 주세요.always
는 요구가 성공했는지 실패했는지에 관계없이 실행되는 콜백입니다. done
이치노
예를 들어 다음과 같습니다.
function xhr_get(url) {
return $.ajax({
url: url,
type: 'get',
dataType: 'json',
beforeSend: showLoadingImgFn
})
.always(function() {
// remove loading image maybe
})
.fail(function() {
// handle request failures
});
}
xhr_get('/index').done(function(data) {
// do stuff with index data
});
xhr_get('/id').done(function(data) {
// do stuff with id data
});
유지 보수성 측면에서 이 기능의 중요한 이점은 애플리케이션별 기능으로 Ajax 메커니즘을 정리했다는 것입니다.의 ★★★★★★★★★★★★★★★★★★★★★★★★★★$.ajax
으로 운용하기 을 하거나 jQuery에서 경우 됩니다.xhr_get
''을합니다.done
method(메서드)입니다.앱 전체의 다른 모든 참조는 동일하게 유지될 수 있습니다.
밖에도 (쿨하게) 할 수 .$.Deferred
중 가 '우리'를 사용하는 pipe
에러가 발생했을 에서도, .$.ajax
요청 자체가 성공합니다.예를 들어 다음과 같습니다.
function xhr_get(url) {
return $.ajax({
url: url,
type: 'get',
dataType: 'json'
})
.pipe(function(data) {
return data.responseCode != 200 ?
$.Deferred().reject( data ) :
data;
})
.fail(function(data) {
if ( data.responseCode )
console.log( data.responseCode );
});
}
xhr_get('/index').done(function(data) {
// will not run if json returned from ajax has responseCode other than 200
});
은 이쪽$.Deferred
여기: http://api.jquery.com/category/deferred-object/
메모: jQuery 1.8 현재pipe
를 사용하기 위해 폐지되었습니다.then
같은은방방방방방
async: false
에는 '아약스.success
.done
그렇지 않으면 사용하는 것이 좋습니다..done
이것은 jQuery 공식 사이트입니다.
jQuery 1.8에서는 jqXHR($.Deferred)에서 async: false를 사용하는 것은 권장되지 않습니다.jqXHR.done 등의 jqXHR 객체에 대응하는 메서드 대신 success/error/complete 콜백옵션을 사용해야 합니다.
jqXHR에 $.ajax()
jQuery 1.5에서는 Promise 인터페이스를 구현하여 Promise의 모든 속성, 메서드 및 동작을 제공합니다(자세한 내용은 "Deferred 개체" 참조).이러한 메서드는 1개 또는 복수의 함수 인수를 사용합니다.이 인수는, 다음의 경우에 호출됩니다.$.ajax()
요구가 종료됩니다.즉시 됩니다."(요구가 이미 완료된 경우 콜백은 즉시 실행됩니다).한 Promise 는 다음과 jqXHR Promise 음 、 Promise 。
jqXHR.done(function( data, textStatus, jqXHR ) {});
는, 「」를 해 주세요.deferred.done()
를 참조해 주세요.
jqXHR.fail(function( jqXHR, textStatus, errorThrown ) {});
인 " " " " 입니다..fail()
.error() 입니다."deferred.fail()" "Deferred.fail()" 입니다.
jqXHR.always(function( data|jqXHR, textStatus, jqXHR|errorThrown ) { });
(1.) 으로서 (jQuery 1.6)이 있습니다.always()
되지 않는 ''가 '로 대체됩니다..complete()
★★★★★★ 。
요구에 는 '인수'와..done()
: data, textStatus "jqXHR". 인수는 ""의 와 동일합니다..fail()
및 : jqXHR ", textStatus " " 하세요.★★★★deferred.always()
를 참조해 주세요.
jqXHR.then(function( data, textStatus, jqXHR ) {}, function( jqXHR, textStatus, errorThrown ) {});
의 기능을 통합합니다..done()
★★★★★★★★★★★★★★★★★」.fail()
jQuery 1) 수 (jQuery 1.8) Promise.''을.then()
를 참조해 주세요.
폐지 통지:그
jqXHR.success()
,jqXHR.error()
, , , , 입니다.jqXHR.complete()
jQuery 3.0입니다.하시면 됩니다.jqXHR.done()
,jqXHR.fail()
, , , , 입니다.jqXHR.always()
★★★★★★ 。
언급URL : https://stackoverflow.com/questions/8840257/jquery-ajax-handling-continue-responses-success-vs-done
'programing' 카테고리의 다른 글
docker-compose.yml에서 env_file을 명확하게 선언해야 하는 이유는 무엇입니까? (0) | 2023.03.19 |
---|---|
Google Chrome은 JSON AJAX 응답을 일반 텍스트가 아닌 트리로 표시합니다. (0) | 2023.03.19 |
Json에서 Protobuf로 변환하는 방법? (0) | 2023.03.14 |
데이터 변경 시 $watch가 실행되지 않음 (0) | 2023.03.14 |
스프링 부트(JPA 포함): @Entity를 다른 패키지로 이동 (0) | 2023.03.14 |