#javascript #ajax
#javascript #ajax
Вопрос:
я использую XMLHttpRequest
внутри класса:
xhr.onreadystatechange = function() {
if (this.readyState == 4 amp;amp; this.status == 200) {
let data = JSON.parse(this.responseText);
this.checkData(data);
}
else{
console.log(this);
}
}.bind(this);
если я использую bind(this)
в конце, я потеряю доступ this
к for xhr
, и если я его удалю, я потеряю доступ this
к своему классу, что мне делать?
Комментарии:
1. Используйте выборку …
2. поэтому используйте xhr.readyState…. xhr.status….
Ответ №1:
У вас есть два варианта….
Вы либо сохраняете это в переменной снаружи и используете ее внутри, либо не используете bind.
var _this = this;
xhr.onreadystatechange = function() {
if (this.readyState == 4 amp;amp; this.status == 200) {
let data = JSON.parse(this.responseText);
_this.checkData(data);
}
else{
console.log(this);
}
}
Или вы используете bind() и используете xhr вместо этого
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 amp;amp; xhr.status == 200) {
let data = JSON.parse(xhr.responseText);
this.checkData(data);
}
else{
console.log(xhr);
}
}.bind(this);