Я знаю, что могу просто сделать это с помощью global, но я бы хотел быть объектно-ориентированным, если могу. Если мой ответ на запрос возвращает false для этого значения «ok», я хотел бы зарегистрировать данные, которые были изначально опубликованы. Доступны ли эти данные функции прослушивателя объекта запроса? Спасибо!
function reqListener () {
var data = this.responseText;
var jsonResponse = JSON.parse(data);
if (jsonResponse['ok'] == false) {
//Here I want to log the data that I originally posted
console.info(__TheFormDataThatWasPassedtoSend__);
}
}
var xhr = new XMLHttpRequest();
xhr.addEventListener("load",reqListener);
xhr.open('POST',urltopostto, true);
// Set up a handler for when the request finishes.
xhr.onload = function () {
if (xhr.status === 200) {
// File(s) uploaded.
console.info('Uploaded');
} else {
alert('An error occurred!');
}
};
xhr.send(formData);



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Таким образом, у вас есть проблема в том, что вам нужно использовать данные, известные при создании eventListener, когда eventListener действительно срабатывает. Ниже приведен ваш код для этого с formData.
function reqListener (formData) {
var data = this.responseText;
var jsonResponse = JSON.parse(data);
if (jsonResponse['ok'] == false) {
console.info(formData);
}
}
var xhr = new XMLHttpRequest();
xhr.addEventListener("load", function() { reqListener.call(this,formData) });
xhr.open('POST',urltopostto, true);
// Set up a handler for when the request finishes.
xhr.onload = function () {
if (xhr.status === 200) {
// File(s) uploaded.
console.info('Uploaded');
} else {
alert('An error occurred!');
}
};
xhr.send(formData);