programing

AJAX 호출에서 success() 또는 complete()를 사용합니다.

i4 2023. 3. 22. 20:45
반응형

AJAX 호출에서 success() 또는 complete()를 사용합니다.

아래 AJAX 콜을 이해하고 싶습니다.complete()방법

교환할 때complete()와 함께success(), 빈 응답을 수신합니다.텍스트는 AJAX와 같습니다.error()방법.

다른 한편으로, 내가 떠날 때complete()그 방법 그대로라면 모든 것이 예상대로입니다.

그런가요?success()보다 빨리 반환되다complete()?

$("#formnaw").submit(function() {
  var fnc = invoerFnc.attr("value");
  var vnaam = invoerVnaam.attr("value");
  var anaam = invoerAnaam.attr("value");
  var str1 = invoerStr1.attr("value");
  var nr1 = invoerNr1.attr("value");
  var pc1 = invoerPc1.attr("value");
  var pl1 = invoerPl1.attr("value");
  var tel1 = invoerTel1.attr("value");
  var mob1 = invoerMob1.attr("value");
  var em1 = invoerEm1.attr("value");
  var goknop = $("#formnaw > .instelling_go");
  //we deactiveren de submit knop tijdens het verzenden 
  goknop.attr({
    disabled: true
  });
  goknop.blur();
  //stuur de post variabelen naar livetabs.php
  $.ajax({
    type: "POST",
    url: "registraties/instellingenact.php",
    data: "actie=wijzignaw&vnaam=" + vnaam + "&anaam=" + anaam + "&functie=" + fnc + "&straat=" + str1 + "&nr=" + nr1 + "&postcode=" + pc1 + "&plaats=" + pl1 + "&tel=" + tel1 + "&mob=" + mob1 + "&email=" + em1,
    timeout: 5000,
    success: function(data, textStatus) {
        alert('bij success');
        //doe iets
      } //EINDE success
      ,
    error: function(XMLHttpRequest, textStatus, errorThrown) {
        if (textStatus == 'timeout') {
          //doe iets
        } else if (textStatus == 'error') {
          //doe iets
        }
        //her-activeer de zend knop
        goknop.attr({
          disabled: false
        });
      } //EINDE error
      ,
    complete: function(data) {
        updatelijst.append(data.responseText + "<br>");
        if (data.responseText.indexOf("Fout") != -1) {
          $('#formnaw').find('td.foutnr1').prepend(data.responseText);
        } else {
          updatelijst.animate({
            opacity: 'show'
          }, 1000, function() {});
        }
        //her-activeer de zend knop
        goknop.attr({
          disabled: false
        });
      } //EINDE complete
  }); //EINDE ajax
  //we stoppen het standaard gedrag van een submit, zodat de pagina niet wordt vernieuwd.
  return false;
});

그런가요?success()보다 빨리 반환되다complete()?

, AJAXsuccess()메서드가 실행되기 전에complete()방법.

다음으로 프로세스의 흐름을 나타내는 그림을 나타냅니다.

AJAX 콜프로세스 흐름도

주의할 점은

  • success()(Local Event)는 요구가 성공했을 경우에만 호출됩니다(서버로부터의 에러나 데이터의 에러는 없습니다).

  • 한편,complete()(Local Event)는 요청 성공 여부에 관계없이 호출됩니다.동기 요구에서도 항상 완전한 콜백을 수신합니다.

AJAX 이벤트에 대한 자세한 내용은 여기를 참조하십시오.

complete다음 중 하나가 실행된 후success또는error콜백이 실행되었습니다.

두 번째 매개 변수를 확인해야 할 것 같습니다.complete제안도 있습니다.이것은 ajaxCall의 성공 유형을 유지하는 String입니다.

다른 콜백에 대해서는 여기서 좀 더 자세히 설명하겠습니다.


내 생각에 당신은 그 사실을 놓쳤나 보군요complete및 그success함수(부정합하지 않은 API를 알고 있습니다)는 다른 데이터를 가져옵니다. success데이터만 가져옵니다.complete통째로 손에 넣다XMLHttpRequest물건.물론 없다responseText속성을 지정합니다.

그래서 만약 당신이complete와 함께success교환도 필요합니다.data.responseText와 함께data오직.

성공.

함수에는 다음 두 개의 인수가 전달됩니다.서버에서 반환된 데이터('데이터'에 따라 포맷됨)Type' 매개 변수 및 상태를 설명하는 문자열입니다.

완성하다

함수에는 다음 두 개의 인수가 전달됩니다.XMLHttpRequest 개체 및 요청 성공 유형을 설명하는 문자열.

모든 것에 액세스 할 필요가 있는 경우XMLHttpRequest성공 콜백의 오브젝트.이것을 시도해 보는 것을 추천합니다.

var myXHR = $.ajax({
    ...
    success: function(data, status) {
        ...do whatever with myXHR; e.g. myXHR.responseText...
    },
    ...
});

"complete"는 Ajax 콜이 종료되면 실행됩니다."success"는 Ajax 콜이 성공적인 응답 코드로 종료되었을 때 실행됩니다.

격리된 상태라서 말인데complete()$.199는 다음과 같습니다.finally시도 캐치블록에서.

임의의 프로그래밍 언어로 try catch block을 사용하는 경우 실행이 성공했는지 실행 오류가 발생했는지 여부는 중요하지 않습니다.마지막으로 {} 블록은 항상 실행됩니다.

도 마찬가지입니다.complete()로 $1,000를 받을 수 입니다.success() 또는 "response" 입니다.error()complete()함수는 실행이 완료되면 항상 호출됩니다.

언급URL : https://stackoverflow.com/questions/1021062/use-success-or-complete-in-ajax-call

반응형