tôi thích bắt bất kỳ ngoại lệ ajax 401 Unauthorised
nào, nhưng không thích thay đổi tất cả các truy vấn ajax của tôi. Có cách nào để thay đổi nó cho bất kỳ cuộc gọi .ajax $ như (ghi đè lên bất kỳ xử lý error
)?JQuery bắt gặp bất kỳ lỗi ajax nào
Trả lời
bạn có thể sử dụng các handler ajax toàn cầu .ajaxError()
$(document).ajaxError(function(event, jqxhr, settings, exception) {
if (jqxhr.status== 401) {
$("div.log").text("Triggered ajaxError handler.");
}
});
Bạn có thể làm một cái gì đó như thế này:
$(function() {
$.ajaxSetup({
error: function(jqXHR, exception) {
if (jqXHR.status === 401) {
alert('HTTP Error 401 Unauthorized.');
} else {
alert('Uncaught Error.\n' + jqXHR.responseText);
}
}
});
});
này sẽ bắt lỗi trong bất kỳ ajax
cuộc gọi của bạn.
nó sẽ thất bại trong trường hợp nếu một cuộc gọi ajax đã gọi lại 'lỗi' được chỉ định trong các tùy chọn như' $ .ajax ({url: '', error: function() {}}) ' –
Hãy thử sử dụng .ajaxError()
như một phương pháp toàn cầu http://api.jquery.com/ajaxError/
Các $.ajaxSetup()
chức năng sẽ cho phép bạn chỉ định tùy chọn toàn cầu cho các cuộc gọi Ajax. Tuy nhiên, hãy cẩn thận vì các cuộc gọi khác tới ajaxSetup()
sẽ ghi đè tùy chọn toàn cầu và các tùy chọn cục bộ được chỉ định cho phương thức ajax()
sẽ ghi đè cài đặt chung.
Để bắt một mã 401
tình trạng chỉ cần thêm
$.ajaxSetup({
statusCode: {
401: function(err){
console.log('Login Failed.', err.responseJSON);
// or whatever...
}
}
});
vào trang của bạn ở đâu đó trước khi cuộc gọi AJAX là bắn.
sử dụng google sẽ mang lại cho bạn một câu trả lời trong vài giây: '$ .ajaxSetup ({ statusCode: { 401: function() {// này sẽ bắt bất kỳ và tất cả các access denied lỗi }} }) ; ' –