javascript - 基于 Promise 的 XHR 返回 Undefined - JS
问题描述
我正在 node.js 中构建一个 Web 服务器并调用我的 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 中测试相同的路由,它会给出正确的响应。
解决方案
推荐阅读
- highcharts - 高位图表中的绘图选项
- python - 如何将文本添加到图像段
- javascript - 用 Jest 对 JS 脚本进行单元测试:我可以模拟 ES6 类吗
- node.js - 如何在不重新启动我的电脑或重新安装此模块的情况下启用/启动 pm2 模块?
- c# - WPF 如何在 Gridview 中获取行和单元格数据
- javascript - 使用 POST 请求生成 GUID - Ionic
- git - 如何将非活动的 GitHub PR 合并到我自己的 fork 中?
- sql-server - 降级或查找具有特定版本的 Sql server 的问题
- angular - Angular 6 Validator 表格中的表格 Angular Material 的问题
- javascript - 未捕获的类型错误:无法读取 null 的属性“createMediaElementSource”