programing

AJAX 호출의 오류를 어떻게 처리합니까?

closeapi 2023. 7. 30. 17:48
반응형

AJAX 호출의 오류를 어떻게 처리합니까?

다음과 같은 jQuery AJAX 통화가 있다고 가정해 보겠습니다.

$.ajax({
   type: "POST",
   url: "MyUrl",
   data: "val1=test",
   success: function(result){
        // Do stuff
   }
 });

이제 이 AJAX 호출이 이루어지면 서버 측 코드가 몇 가지 오류 처리 검사(예: 사용자가 아직 로그인했는지, 사용자가 이 호출을 사용할 권한이 있는지, 데이터가 유효한지 등)를 통해 실행되기를 원합니다.오류가 감지되면 오류 메시지를 클라이언트 쪽으로 버블백하려면 어떻게 해야 합니까?

저의 초기 생각은 error와 errorMessage라는 두 개의 필드가 있는 JSON 객체를 반환하는 것입니다.그런 다음 jQuery AJAX 통화에서 다음 필드를 확인합니다.

$.ajax({
   type: "POST",
   url: "MyUrl",
   data: "val1=test",
   success: function(result){
       if (result.error == "true") 
       {
           alert("An error occurred: " & result.errorMessage);
       }
       else 
       {
           // Do stuff
       }
   }
 });

이건 좀 투박하게 느껴지지만, 효과가 있어요.더 좋은 대안이 있습니까?

개인적으로 제 라이브러리에 다음 코드와 유사한 코드가 있습니다.

$.ajaxSetup({
    error: function(xhr){
        alert('Request Status: ' + xhr.status + ' Status Text: ' + xhr.statusText + ' ' + xhr.responseText);
    }
});

jQuery 문서 Ajax/jQuery.ajax 설치

서버 측(php 사용)에서 클라이언트 측으로 오류를 버블링하는 가장 좋은 방법은 400년대 어딘가(항상 오류와 관련됨)에 있는 Ajax 요청을 통해 헤더를 보내는 것입니다.Ajax 요청이 이를 수신하면 오류 기능이 트리거됩니다.이는 또한 오류를 정의할 필요가 없음을 의미합니다. 모든 $.ajax 호출을 호출합니다.

header('HTTP/1.0 419 Custom Error');

w3.org 헤더 정보에서 인용

오류 4xx, 5xx 4xx 코드는 클라이언트가 오류를 범한 것처럼 보이는 경우를 대상으로 하며, 서버가 오류를 범한 것으로 인식하는 경우를 대상으로 합니다.일반적으로 이러한 경우를 구별하는 것은 불가능하므로 그 차이는 정보 제공에 불과합니다.본문 섹션에는 오류를 사람이 읽을 수 있는 형태로 설명하는 문서가 포함될 수 있습니다.문서는 MIME 형식이며, 텍스트/일반, 텍스트/html 또는 요청에 허용되는 형식으로 지정된 형식 중 하나만 사용할 수 있습니다.

$.ajax({
   type: "POST",
   url: "MyUrl",
   data: "val1=test",
   success: function(result){
        // Do stuff
   },
   error: function(request,status,errorThrown) {
        // There's been an error, do something with it!
        // Only use status and errorThrown.
        // Chances are request will not have anything in it.
   }
 });

jQuery agax 함수는 마지막에 실패한 호출에 대한 콜백이라는 매개 변수를 하나 더 허용하지 않습니까?그렇다면 다음을 추가하십시오.fail:function(...){..}성공적인 콜백 후.

HTTP 오류를 사용하여 서버 측에서 오류 코드를 반환합니다. 오류가 무엇인지 가장 잘 알 수 있습니다.그런 다음 오류 콜백을 사용합니다.웹 서버에서 제공한 오류도 표시할 수 있습니다.

이 질문에 대답하는 것은 꽤 늦었지만 es6와 jquery 2.2를 사용하는 사람에게 도움이 될 것 같습니다.

나는 일반적으로 코드에서 이(지연된 접근 방식)를 따릅니다.

sendAjaxRequest(URL, dataToSend) {
    return $.ajax({
        type        : 'POST',
        url         : URL,
        data        : JSON.stringify(dataToSend),
        dataType    : 'json'
    }).fail((responseData) => {
        if (responseData.responseCode) {
            console.error(responseData.responseCode);
        }
    });
},

된 연기것첨니다습을 했습니다.fail일부 오류가 발생할 경우 호출되는 메서드입니다.이는 오류 콜백 옵션의 대체 구조이며 .fail() 메서드는 최신 jquery에서 더 이상 사용되지 않는 .error() 메서드를 대체합니다.

를 건 곳에서 sendAjaxRequest사용합니다thenjquery 약속 콜백

sendAjaxRequest(URL, dataToSend)
.then(
     (success) => {
     },
     (error) => {
     }
);

서버에서 받은 응답을 기반으로 성공 또는 오류 함수를 호출합니다.

언급URL : https://stackoverflow.com/questions/407596/how-do-you-handle-errors-from-ajax-calls

반응형