Я новичок в jQuery и пытаюсь что-то построить с AJAX. Я попытался использовать обычный, базовый c класс XMLHttpRequest, а затем $.ajax({...}) but none of them work.</p>
<pre><code>function getNormal_XHR_Request(){
let request = new XMLHttpRequest();
// I also tried to make a variable here, assign it to the request.response and return it in the end
let returnValue = null;
request.addEventListener(
"load",
(event) => {
if(request.readyState === 4 && request.status === 200){
console.log(request); // this will work
console.log(request.response); // this will work too
// Assign the returnValue to the request.response
returnValue = JSON.parse(request.response); // JSON.parse(request.response) doesn't return undefined, it returns my object that I want to use, but even if I equal the returnValue to it, it will still return undefined
return JSON.parse(request.response);
}
},
false // dispatch event in the bubbling phase not in the capturing phase
)
request.open("GET", "scripts/users.json");
request.setRequestHeader("Accept", "text/json");
request.send();
return returnValue
}
Это обычный XMLHttpRequest (), который я использовал. Проблема в том, что если я хочу сказать, например,
x = getNormal_XHR_Request()
, чтобы в моей переменной x был файл JSON, он не работает и возвращает неопределенное значение.
И то же самое происходит с $.ajax({...})
class XHR_REQUEST{
constructor(path){
this.path = path;
}
getRequest_XHR(requestHeaders){
this.requestHeaders = requestHeaders;
var self = this;
let returnValue = [];
$.ajax({
url : self.path,
dataType : "json",
headers : self.requestHeaders,
})
.done((data) => {
returnValue = data;
})
.fail((jqXHR, errorMessage, error) => {
console.log(jqXHR);
console.log(errorMessage);
console.log(error);
});
return returnValue;
}
};
</code>
Она работает так же, как обычная функция, которую я использовал выше, все, что я делаю, возвращает неопределенное значение, даже если request.response дает мне правильный ответ. Если я попытаюсь console.log (request.response), я получу объект, если я попытаюсь вернуть его и console.log () результат, он вернет мне неопределенный. Почему?