0

I've started learning xml and I have a problem with XMLHttpRequest. Can someone tell me what am I doing wrong? Why this works?

function load_hendler() {
  if (this.status == 200 && this.readyState == 4) {
    console.log(this.responseXML)
  }
}
const xhr = new XMLHttpRequest()
xhr.onload = load_hendler
xhr.open("GET", "./students.xml")
xhr.send()

...but this don't

function xhr_general_request() {
  const xhr = new XMLHttpRequest()
  xhr.onload = () => {
    if (xhr.status == 200 && xhr.readyState == 4) {
      console.log(this.responseXML)
    }
  }
  xhr.open("GET", "./students.xml")
  xhr.send()
}
Barmar
  • 741,623
  • 53
  • 500
  • 612
  • Because functions declared with fat arrow do not hold a context, hence they take the context of the scope where they are declared. So `this` in `this.responseXML` does not correspond to the `xhr` instance. – Cesare Polonara Jun 02 '22 at 20:21
  • Arrow functions don't set `this`. Either use `xhr.responseHTML` or make it a traditional function. – Barmar Jun 02 '22 at 20:21

0 Answers0