有类似的问题询问这个问题,但这些解决方案对我来说似乎不起作用。我有一个Java应用程序,HTTP GETs服务器用于检索一些信息,但我正在测试此服务器没有响应的情况。我试图到达一个返回HTTP 403(禁止)响应的Web服务器,我想处理错误。
首先使用以下代码,我可以执行HTTP GET,访问网页即可。我没有得到HTTP 403错误响应。 但是,如果我在以下代码中取消超时,则ajax将能够达到错误并通过“超时”响应#39;错误。是的,这是一个超时错误,但由于HTTP 403错误,我想得到403.
init: function (credentials) {
$.ajax({
type: "GET",
url: this.serverURL,
//timeout: 5000,
headers: {
Accept: "application/json"
},
contentType: "application/json; charset=utf-8",
crossDomain: true,
cache: false,
data: {
'username': credentials.username,
'key': credentials.key
},
jsonp: false,
dataType: 'jsonp',
//never enters here...
statusCode: {
404: function() {
alert('404 page not found');
},
400: function() {
alert('400 bad request');
},
403: function() {
alert('403 forbbiden');
}},
error: function (XMLHttpRequest, errorThrown) {
handleError(XMLHttpRequest, errorThrown);
}
});
function handleError( XMLHttpRequest, errorThrown ) {
//If not found, internal server error or forbidden (it should enter here)
if (XMLHttpRequest.status == 404 || XMLHttpRequest.status == 500 || XMLHttpRequest.status == 403) {
Logger.loginfo('never enters here...');
}
else if (XMLHttpRequest.readyState == 4) {
//http error
Logger.loginfo('Error: ' + errorThrown);
}
else if (XMLHttpRequest.readyState == 0) {
// Network error, not possible to open() (i.e. connection refused, access denied...)
Logger.loginfo('Error: ' + errorThrown);
}
else {
//http error
Logger.loginfo('Error else!: ' + errorThrown);
// something after initializing/opening the HTTP GET but before completing it
}
};}
非常感谢任何帮助。
答案 0 :(得分:0)
您应该在异常中添加以下内容,并检查是否正确获取所有值。
error: function(xhr, textStatus, error){
console.log(xhr.statusText);
console.log(textStatus);
console.log(error);
//then call your function and pass the values
//and do the checks
}
您也可以查看其他details的答案。