Ajax onerror处理程序不工作
Ajax onerror handler not working
在纯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
,但我认为有一个更优雅的解决方案。
我相信onerror仅用于安全问题(例如:在"配置"ajax(前端)错误。
"HTTP错误"不被认为是"错误",而是来自服务器的"响应"。
XMLHttpRequest.onload
总是被执行,即使"http response"有错误:
尝试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
相关文章:
- importScripts在web工作程序中返回未定义的
- 读取在具有IE的工作程序中生成的对象URL
- 使用web工作程序进行多个并发繁重计算
- Chrome没有加载最新版本的web工作程序脚本(运行缓存版本)
- web工作程序中不同的服务器请求行为
- Firebase推送通知-节点工作程序
- fetch事件处理程序中的fetch()未触发服务工作程序中的fetch事件
- Async.js队列工作程序未完成
- Web工作程序在处理大型数组时内存不足
- 附加组件生成器:使用端口的多个工作程序
- js web工作程序内存泄漏
- 在执行不区分大小写的排序以删除web工作程序中的重复项时,首选大写字母唯一
- Web工作程序在传递具有数组缓冲区的大型对象数组时会崩溃Chrome选项卡
- 从node.js派生出多个phantomjs工作程序是否理想
- 从web工作程序和主浏览器线程访问相同的websql数据库
- 没有web工作程序的Javascript后台处理
- 如何通过javascript工作程序显示循环进程状态
- 检测正在运行的javascript工作程序
- 正在检索web工作程序中所有变量的列表
- HTML5画布处理中Web工作程序内存不足