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) });
답변
간단한 방법은 ajaxError 를 구현하는 것입니다 .
Ajax 요청이 오류와 함께 완료 될 때마다 jQuery는 ajaxError 이벤트를 트리거합니다. .ajaxError () 메소드로 등록 된 모든 핸들러가 현재 실행됩니다.
예를 들면 다음과 같습니다.
$('.log').ajaxError(function() {
$(this).text('Triggered ajaxError handler.');
});
ajaxError 문서를 읽는 것이 좋습니다 . 위에서 설명한 간단한 유스 케이스보다 더 많은 작업을 수행합니다. 주로 콜백은 많은 매개 변수를 허용합니다.
$('.log').ajaxError(function(e, xhr, settings, exception) {
if (settings.url == 'ajax/missing.html') {
$(this).text('Triggered ajaxError handler.');
}
});
답변
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'] );
})
답변
.onerror 핸들러를 ajax 객체에 연결합니다. 바닐라가 플랫폼 간 작동 할 때 사람들이 응답을 위해 JQuery를 게시해야한다고 주장하는 이유는 무엇입니까?
빠른 예 :
ajax = new XMLHttpRequest();
ajax.open( "POST", "/url/to/handler.php", true );
ajax.onerror = function(){
alert("Oops! Something went wrong...");
}
ajax.send(someWebFormToken );