IT

새 jQuery AJAX 코드에 성공 및 오류 대신 .done() 및 .fail()을 사용해야 합니까?

itgroup 2023. 8. 16. 22:09
반응형

새 jQuery AJAX 코드에 성공 및 오류 대신 .done() 및 .fail()을 사용해야 합니까?

다음과 같이 코딩했습니다.

$.ajax({ cache: false,
    url: "/Admin/Contents/GetData",
    data: { accountID: AccountID },
    success: function (data) {
        $('#CityID').html(data);
    },
    error: function (ajaxContext) {
        alert(ajaxContext.responseText)
    }
});

하지만 마지막에 있는 jQuery 문서를 보면 아래와 같이 코딩해야 한다고 제안하거나 최소한 추가해야 한다고 제안하는 것 같습니다..done()그리고 a.fail():

var request = $.ajax({ cache: false,
    url: "/Admin/Contents/GetData",
    data: { accountID: AccountID }
});

request.done(function (data) {
    xxx;
});
request.fail(function (jqXHR, textStatus) {
    xxx;
});

갱신하다

제가 이렇게 코딩을 하면 똑같나요, 아니면 세 개로 나눌 수 있는 장점이 있나요?

$.ajax({ cache: false,
    url: "/Admin/Contents/GetData",
    data: { accountID: AccountID }
}).done(function (data) {
    xxx;
}).fail(function (jqXHR, textStatus) {
    xxx;
});

사용자 2246674에 의해 명시된 바와 같이,success그리고.errorAjax 함수의 매개 변수가 유효하기 때문입니다.

선행 답변과 일관성을 유지하기 위해 문서를 참조하십시오.

사용 중지 알림:

jqXHR.success(), jqXHR.error() 및 jqXHR.complete() 콜백은 jQuery 1.8에서 더 이상 사용되지 않습니다.코드를 최종적으로 제거할 수 있도록 준비하려면 jqXHR.done(), jqXHR.fail() 및 jqXHR.always()를 대신 사용합니다.

콜백-조작 함수를 사용하는 경우(예: 메서드 체인 사용),.done(),.fail()그리고..always()대신에success(),error()그리고.complete().

@Michael Laffargue의 게시물에 추가하고 싶은 것이 있습니다.

jqXHR.done()더 빠릅니다!

jqXHR.success()콜백에 로드 시간이 있고 때로는 스크립트를 오버킬할 수 있습니다.전에 그것을 어렵게 발견했습니다.

업데이트:

사용.jqXHR.done(),jqXHR.fail()그리고.jqXHR.always()아약스 요청으로 더 잘 조작할 수 있습니다.일반적으로 일부 변수나 개체에서 Ajax를 정의하고 코드의 모든 부분에서 해당 변수나 개체를 사용하여 데이터를 더 빠르게 가져올 수 있습니다.좋은 예:

/* Initialize some your AJAX function */
function call_ajax(attr){
    var settings=$.extend({
        call            : 'users',
        option          : 'list'
    }, attr );

    return $.ajax({
        type: "POST",
        url: "//exapmple.com//ajax.php",
        data: settings,
        cache : false
    });
}

/* .... Somewhere in your code ..... */

call_ajax({
    /* ... */
    id : 10,
    option : 'edit_user'
    change : {
          name : 'John Doe'
    }
    /* ... */
}).done(function(data){

    /* DO SOMETHING AWESOME */

});

간단히 말하면

$.ajax("info.txt").done(function(data) {
  alert(data);
}).fail(function(data){
  alert("Try again champ!");
});

만약 그것이 info.text를 얻는다면, 그것은 당신이 어떤 함수를 추가하든, 또는 서버로부터 info.text를 검색할 수 없다면, 경보나 오류 함수를 알려줄 것입니다.

jQuery가 이러한 방법을 사용하지 않기 때문에 이전 기존 응용 프로그램에서 jQuery로 1.x에서 2.x 또는 3.x로 마이그레이션할 때 성공 대신 .done, .fail, error를 사용합니다.예를 들어 서버 웹 메서드에 호출한 다음 서버가 호출 메서드(Ajax 메서드)로 약속 개체를 반환하는 경우 이러한 약속 개체에는 .done, .fail 등의 메서드가 포함됩니다.따라서 성공 및 실패 대응에 대해서도 동일한 작업을 수행합니다.다음은 예입니다(예: GET...와 같은 요청 유형에 대해 구성할 수 있는 것과 동일한 방법으로 POST 요청을 위한 것입니다).

 $.ajax({
            type: "POST",
            url: url,
            data: '{"name" :"sheo"}',
            contentType: "application/json; charset=utf-8",
            async: false,
            cache: false
            }).done(function (Response) {
                  //do something when get response            })
           .fail(function (Response) {
                    //do something when any error occurs.
                });

언급URL : https://stackoverflow.com/questions/10931836/should-i-use-done-and-fail-for-new-jquery-ajax-code-instead-of-success-and

반응형