在纯Javascript中:我发出了一个AJAX请求。
服务器应该返回410错误。
我的代码:
var ajax = new XMLHttpRequest();
ajax.onload = displayXML;
ajax.onerror = displayError;
ajax.open('GET', 'http://myurl.com/request?param=1¶m=2', true);
ajax.send();
function displayError(e) {
console.log(this.status);
}
function displayXML() {
console.log(this.responseXML);
}
问题是,即使返回HTTP 410,也不会调用onerror
函数。我的控制台说" GET .... 410(Gone)"在显示ajax.send()
的行上,然后调用displayPopularity
。如果我不能使用.onerror
,我该如何处理HTTP错误?我的意思是,我可以将错误处理转移到displayPopularity
但我认为有更优雅的解决方案。
答案 0 :(得分:1)
我认为onerror仅用于安全问题(例如cross-origin)或“config”ajax(前端)中的错误。
“HTTP错误”不被视为“错误”,而是来自服务器的“响应”。
始终执行 XMLHttpRequest.onload
,即使“http响应”中存在错误:
使用onreadystatechange
:
if
function displayXML()
{
if (this.readyState == 4) //this line is equivalent to ajax.onload
{
if (this.status == 200) //Detect http status response (200 = Ok)
{
console.log(this.responseXML);
} else {//If 200 <> status = HTTP error
console.log(this.status);
}
}
}
var ajax = new XMLHttpRequest(); //Create obj
ajax.open('GET', 'http://myurl.com/request?param=1¶m=2', true); //Config request
ajax.onreadystatechange = displayXML; //Add event
ajax.send(null); //Send request