Я создаю веб-сервер в node.js и вызываю мой API для данных.Я хотел немного очистить код, создав функцию XHR (имена AJAX) и вызывая ее в каждом из маршрутов.Я понимаю, что этот вопрос задавался в нескольких вариантах, но даже выполняя все эти уроки, я не смог получить ответ.
XHR Функция:
var XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest;
exports.request = obj => {
return new Promise((resolve, reject) => {
let xhr = new XMLHttpRequest();
xhr.open(obj.method || "GET", obj.url);
if (obj.headers) {
Object.keys(obj.headers).forEach(key => {
xhr.setRequestHeader(key, obj.headers[key]);
});
}
xhr.onload = () => {
if (xhr.status >= 200 && xhr.status < 300) {
console.log(xhr.response);
resolve(xhr.response);
} else {
console.log(xhr.statusText)
reject(xhr.statusText);
}
};
xhr.onerror = () => reject(xhr.statusText);
xhr.send(obj.body);
});
};
Как я это называю:
const AJAX = require('../ajax');
// G1: GET All Clubs
exports.get_all_clubs = (req, res, next) => {
console.log('Return all Clubs:')
AJAX.request({
url: "http://localhost:3000/clubs",
method: "GET"
})
.then(data => {
// Log out Data
console.log(JSON.parse(data));
})
.catch(error => {
console.log(error);
});
}
И ответ, который я получаю:
GET /clubs - - ms - -
Return all Clubs:
undefined
SyntaxError: Unexpected token u in JSON at position 0
at JSON.parse (<anonymous>)
at AJAX.request.then.data (C:\Users\tyler\Desktop\Code\clubadmin\api\controllers\clubs.js:14:30)
at <anonymous>
at process._tickCallback (internal/process/next_tick.js:189:7)
API работает, и если я тестирую тот же маршрут в POSTMAN, он даетправильный ответ.