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 :
실제로 다음과 같은 오류 객체입니다.
다음 과 같은 함수 console.log
내부 를 사용하여 자신의 브라우저 콘솔에서 이것을 볼 수도 있습니다 error
.
error: function (jqXHR, exception) {
console.log(jqXHR);
// Your error handling logic here..
}
We are using the status
property from this object to get the error code, like if we get status = 404 this means that requested page could not be found. It doesn't exists at all. Based on that status code we can redirect users to login page or whatever our business logic requires.
exception:
This is string variable which shows the exception type. So, if we are getting 404 error, exception
text would be simply 'error'. Similarly, we might get 'timeout', 'abort' as other exception texts.
Deprecation Notice: The
jqXHR.success()
,jqXHR.error()
, andjqXHR.complete()
callbacks are deprecated as of jQuery 1.8. To prepare your code for their eventual removal, usejqXHR.done()
,jqXHR.fail()
, andjqXHR.always()
instead.
So, in case you are using jQuery 1.8 or above we will need to update the success and error function logic like:-
// 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");
});
Hope it helps!
Try this:
error: function(jqXHR, textStatus, errorThrown) {
console.log(textStatus, errorThrown);
}
If you want to inform your frontend about a validation error, try to return json:
dataType: 'json',
success: function(data, textStatus, jqXHR) {
console.log(data.error);
}
Your asp script schould return:
{"error": true}
Here is how you pull the asp error out.
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);
}
you're using a function
error(error)
but jquery is actually looking for a function with three parameters:
error(jqXHR, textStatus, errorThrown)
you'll need to add two more parameters.
ALSO: please have a look at all the comments above that mention 'deprecated' :)
$.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
});
From 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.
If you want global handlers you can use:
.ajaxStart(), .ajaxStop(),
.ajaxComplete(), .ajaxError(),
.ajaxSuccess(), .ajaxSend()
참고URL : https://stackoverflow.com/questions/6792878/jquery-ajax-error-function
'program story' 카테고리의 다른 글
MySQL에 데이터를 JSON으로 저장 (0) | 2020.07.26 |
---|---|
제출시 양식 새로 고침 중지 페이지 (0) | 2020.07.26 |
로그인 페이지로의 각도 재 지정 (0) | 2020.07.26 |
vi에서 중복 행을 제거 하시겠습니까? (0) | 2020.07.26 |
레일즈 : 레일에서 find (id)가 예외를 발생시키는 이유는 무엇입니까? (0) | 2020.07.25 |