programing

jQuery.ajax 처리 계속 응답: "success:" vs.done?

cafebook 2023. 3. 19. 18:28
반응형

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 ''을합니다.donemethod(메서드)입니다.앱 전체의 다른 모든 참조는 동일하게 유지될 수 있습니다.

밖에도 (쿨하게) 할 수 .$.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 콜백옵션사용해야 합니다.

JQuery 문서에서

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

반응형