Programming

Ajax 쿼리 게시 오류를 어떻게 포착합니까?

procodes 2020. 5. 8. 21:35
반응형

Ajax 쿼리 게시 오류를 어떻게 포착합니까?


Ajax 요청이 실패하면 오류를 포착하고 적절한 메시지를 표시하고 싶습니다.

내 코드는 다음과 같지만 실패한 Ajax 요청을 잡을 수 없었습니다.

function getAjaxData(id)
{
     $.post("status.ajax.php", {deviceId : id}, function(data){

        var tab1;

        if (data.length>0) {
            tab1 = data;
        }
        else {
            tab1 = "Error in Ajax";
        }

        return tab1;
    });
}

Ajax 요청이 실패하면 "Ajax 오류"가 실행되지 않습니다.

Ajax 오류를 처리하고 실패 할 경우 적절한 메시지를 표시하려면 어떻게해야합니까?


jQuery 1.5부터 지연된 객체 메커니즘을 사용할 수 있습니다.

$.post('some.php', {name: 'John'})
    .done(function(msg){  })
    .fail(function(xhr, status, error) {
        // error handling
    });

다른 방법은 다음을 사용하는 것입니다 .ajax.

$.ajax({
  type: "POST",
  url: "some.php",
  data: "name=John&location=Boston",
  success: function(msg){
        alert( "Data Saved: " + msg );
  },
  error: function(XMLHttpRequest, textStatus, errorThrown) {
     alert("some error");
  }
});

jQuery 1.5는 이것을 잘 처리하는 지연된 객체를 추가했습니다. 통화 $.post후 원하는 핸들러를 호출 하고 연결하기 만하면 됩니다. 지연된 객체를 사용하면 여러 성공 및 오류 처리기를 연결할 수 있습니다.

예:

$.post('status.ajax.php', {deviceId: id})
    .done( function(msg) { ... } )
    .fail( function(xhr, textStatus, errorThrown) {
        alert(xhr.responseText);
    });

jQuery를 1.8 이전에, 함수가 done호출 된 success하고 fail불렀다 error.


$.ajax({
  type: 'POST',
  url: 'status.ajax.php',
  data: {
     deviceId: id
  },
  success: function(data){
     // your code from above
  },
  error: function(xhr, textStatus, error){
      console.log(xhr.statusText);
      console.log(textStatus);
      console.log(error);
  }
});

$.post('someUri', { }, 
  function(data){ doSomeStuff })
 .fail(function(error) { alert(error.responseJSON) });

A simple way is to implement ajaxError:

Whenever an Ajax request completes with an error, jQuery triggers the ajaxError event. Any and all handlers that have been registered with the .ajaxError() method are executed at this time.

For example:

$('.log').ajaxError(function() {
  $(this).text('Triggered ajaxError handler.');
});

I would suggest reading the ajaxError documentation. It does more than the simple use-case demonstrated above - mainly its callback accepts a number of parameters:

$('.log').ajaxError(function(e, xhr, settings, exception) {
  if (settings.url == 'ajax/missing.html') {
    $(this).text('Triggered ajaxError handler.');
  }
});

You have to log the responseText:

$.ajax({
    type: 'POST',
    url: 'status.ajax.php',
    data: {
    deviceId: id
  }
})
.done(
 function (data) {
  //your code
 }
)
.fail(function (data) {
      console.log( "Ajax failed: " + data['responseText'] );
})

참고URL : https://stackoverflow.com/questions/2833951/how-do-i-catch-an-ajax-query-post-error

반응형