箭头功能在AJAX onload内部不起作用。但是,如果我将其编写为常规函数,那么它将起作用

时间:2019-01-16 16:54:05

标签: javascript ajax xmlhttprequest

当我在xhr.onload中使用箭头功能时,没有任何响应。但是,如果我使用像xhr.onload = function(){}这样的普通函数,则会得到响应。为什么以前的代码不能像使用xhr.onload = function(){}时那样工作?

let btn = document.getElementById("button");

btn.addEventListener("click" , function(){
let xhr = new XMLHttpRequest();
xhr.open("GET" , "sample.txt" , true);
xhr.onload = () => {
    if(this.status === 200){
         console.log(this.responseText);
    }
}
xhr.send();
})

1 个答案:

答案 0 :(得分:3)

onload函数的上下文应该是原始的XMLHttpRequest,但是使用arrow函数您没有分配上下文,因此这很有可能是父作用域或窗口。这就是问题所在。