Вы должны взглянуть на документацию для XMLHttpRequests .
Есть несколько проблем, которые необходимо исправить:
- Событие для прослушивания: onreadystatechange или onload (в нижнем регистре)
this
не то, что вы думаете. Вместо этого используйте xhr. Как указал @Marisha, пока вы не используете функцию со стрелкой, this
действительно получает отскок.
this.response
должно быть xhr.responseText
xhr[DAY][D].TITLE
должно быть drOb[DAY][D].TITLE
- Есть некоторые переменные (например,
DAY
), которые не определены в вашем примере кода.
Вот исправленный код. Я оставил некоторые разделы для вас, чтобы заполнить их там, где я не понял, чего вы пытались достичь.
var xhr = new XMLHttpRequest();
xhr.open('GET', 'http://example.com');
xhr.onreadystatechange = function() {
// This function will be called multiple times.
// If the status is anything other than 4 (complete) we don't want to continue.
if (xhr.readyState !== 4) return;
if (xhr.status !== 200) {
// Something went wrong. Tell the user and then stop executing this function.
return;
}
// If we got here without returning, the request was successful.
var drOb = JSON.parse(xhr.responseText);
// alternatively, you might be able to use `var drOb = xhr.response`
// depending on how the server is set up.
};
xhr.send();
Примечание : примерно this.response
против this.responseText
. Причина, по которой я предложил это изменение, заключается в том, что this.response
полагается на xhr.responseType
для определения способа анализа ответа и некоторых браузеров (IE ) не поддерживает JSON. Используя this.responseText
, вы можете быть уверены, что это будет строка, а в сочетании с JSON.parse
вы можете быть уверены, что он проанализирован как JSON и доступен для попытки.