[jquery] jQuery 아약스 오류 함수

데이터를 페이지로 전달하는 ajax 호출이 있는데 값을 반환합니다.

페이지에서 성공적인 호출을 검색했지만 ASP에서 오류가 발생하도록 코딩했습니다. jquery에서 해당 오류를 어떻게 검색합니까?

예를 들면 다음과 같습니다.

cache: false,
url: "addInterview_Code.asp",
type: "POST",
datatype: "text",
data: strData,
success: function (html) {
    alert('successful : ' + html);
    $("#result").html("Successful");
},
error: function (error) {
    **alert('error; ' + eval(error));**
}

내가 이해하지 못하는 오류 비트입니다. 함수에서 어떤 매개 변수를 넣어야하므로 서버에서 발생한 오류 메시지를 사용할 수 있습니다 .



답변

Ajax error함수 의 필수 매개 변수 는 다음 jqXHR, exception과 같이 사용할 수 있습니다.

$.ajax({
    url: 'some_unknown_page.html',
    success: function (response) {
        $('#post').html(response.responseText);
    },
    error: function (jqXHR, exception) {
        var msg = '';
        if (jqXHR.status === 0) {
            msg = 'Not connect.\n Verify Network.';
        } else if (jqXHR.status == 404) {
            msg = 'Requested page not found. [404]';
        } else if (jqXHR.status == 500) {
            msg = 'Internal Server Error [500].';
        } else if (exception === 'parsererror') {
            msg = 'Requested JSON parse failed.';
        } else if (exception === 'timeout') {
            msg = 'Time out error.';
        } else if (exception === 'abort') {
            msg = 'Ajax request aborted.';
        } else {
            msg = 'Uncaught Error.\n' + jqXHR.responseText;
        }
        $('#post').html(msg);
    },
});

데모 피들


매개 변수

jqXHR :

실제로 다음과 같은 오류 객체입니다.

아약스 오류 jqXHR 객체

다음 과 같은 함수 console.log내부 를 사용하여 자신의 브라우저 콘솔에서 이것을 볼 수도 있습니다 error.

error: function (jqXHR, exception) {
    console.log(jqXHR);
    // Your error handling logic here..
}

우리는 status상태 = 404를 얻는다면 요청 된 페이지를 찾을 수 없다는 것을 의미하는 것처럼이 객체 의 속성을 사용하여 오류 코드를 얻습니다. 전혀 존재하지 않습니다. 해당 상태 코드를 기반으로 사용자를 로그인 페이지 또는 비즈니스 로직에 필요한 것으로 리디렉션 할 수 있습니다.

예외:

예외 유형을 표시하는 문자열 변수입니다. 따라서 404 오류가 발생하면 exception텍스트는 단순히 ‘오류’입니다. 마찬가지로 다른 예외 텍스트로 ‘시간 초과’, ‘중지’가 나타날 수 있습니다.


중단 공지 사항 :jqXHR.success() , jqXHR.error()jqXHR.complete()콜백은 jQuery를 1.8로 사용되지 않습니다. 그들의 궁극적 인 제거를위한 코드를 준비하려면, 사용 jqXHR.done(), jqXHR.fail()jqXHR.always()대신.

따라서 jQuery 1.8 이상을 사용하는 경우 다음 과 같은 성공 및 오류 함수 논리를 업데이트해야합니다.

// Assign handlers immediately after making the request,
// and remember the jqXHR object for this request
var jqxhr = $.ajax("some_unknown_page.html")
    .done(function (response) {
        // success logic here
        $('#post').html(response.responseText);
    })
    .fail(function (jqXHR, exception) {
        // Our error logic here
        var msg = '';
        if (jqXHR.status === 0) {
            msg = 'Not connect.\n Verify Network.';
        } else if (jqXHR.status == 404) {
            msg = 'Requested page not found. [404]';
        } else if (jqXHR.status == 500) {
            msg = 'Internal Server Error [500].';
        } else if (exception === 'parsererror') {
            msg = 'Requested JSON parse failed.';
        } else if (exception === 'timeout') {
            msg = 'Time out error.';
        } else if (exception === 'abort') {
            msg = 'Ajax request aborted.';
        } else {
            msg = 'Uncaught Error.\n' + jqXHR.responseText;
        }
        $('#post').html(msg);
    })
    .always(function () {
        alert("complete");
    });

그것이 도움이되기를 바랍니다!


답변

이 시도:

error: function(jqXHR, textStatus, errorThrown) {
  console.log(textStatus, errorThrown);
}

유효성 검사 오류에 대해 프론트 엔드에 알리려면 json을 반환하십시오.

dataType: 'json',
success: function(data, textStatus, jqXHR) {
   console.log(data.error);
}

ASP 스크립트는 다음을 반환해야합니다.

{"error": true}


답변

다음은 ASP 오류를 해결하는 방법입니다.

              cache: false,
              url: "addInterview_Code.asp",
              type: "POST",
              datatype: "text",
              data: strData,
              success: function (html) {
                  alert('successful : ' + html);
                  $("#result").html("Successful");
              },
              error: function (jqXHR, textStatus, errorThrown) {
                  if (jqXHR.status == 500) {
                      alert('Internal error: ' + jqXHR.responseText);
                  } else {
                      alert('Unexpected error.');
                  }
              }


답변

error(jqXHR, textStatus, errorThrown)

http://api.jquery.com/jQuery.ajax/


답변

          cache: false,
          url: "addInterview_Code.asp",
          type: "POST",
          datatype: "text",
          data: strData,
          success: function (html) {
              alert('successful : ' + html);
              $("#result").html("Successful");
          },
          error: function(data, errorThrown)
          {
              alert('request failed :'+errorThrown);
          }


답변

당신은 기능을 사용하고 있습니다

error(error) 

그러나 jquery는 실제로 세 가지 매개 변수가있는 함수를 찾고 있습니다.

error(jqXHR, textStatus, errorThrown)

두 개의 매개 변수를 더 추가해야합니다.

또한 : 위의 모든 의견에서 ‘더 이상 사용되지 않음’을 참조하십시오 🙂

$.ajax("www.stackoverflow.com/api/whatever", {
    dataType:"JSON"
    data: { id=1, name='example' }
}).succes(function (result) {
    // use result
}).error(function (jqXHR, textStatus, errorThrown) {
    // handle error
});


답변

jquery.com에서 :

The jqXHR.success(), jqXHR.error(), and jqXHR.complete()
callback methods introduced injQuery 1.5 are deprecated
as of jQuery 1.8. To prepare your code for their eventual
removal, use jqXHR.done(), jqXHR.fail(), and jqXHR.always() instead.

글로벌 핸들러를 원하면 다음을 사용할 수 있습니다.

.ajaxStart(), .ajaxStop(),
.ajaxComplete(), .ajaxError(),
.ajaxSuccess(), .ajaxSend()