Ajax onerror处理程序不工作

Ajax onerror handler not working

本文关键字:工作 程序 处理 onerror Ajax      更新时间:2023-09-26

在纯Javascript中:我发出一个AJAX请求。

服务器应该返回一个410错误。

我代码:

var ajax = new XMLHttpRequest();
ajax.onload = displayXML;
ajax.onerror = displayError;
ajax.open('GET', 'http://myurl.com/request?param=1&param=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,但我认为有一个更优雅的解决方案。

我相信onerror仅用于安全问题(例如:在"配置"ajax(前端)错误。

"HTTP错误"不被认为是"错误",而是来自服务器的"响应"。

XMLHttpRequest.onload总是被执行,即使"http response"有错误:

尝试onreadystatechangeif:

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&param=2', true); //Config request
ajax.onreadystatechange = displayXML; //Add event
ajax.send(null); //Send request