节点JSON https请求未定义
node JSON https request becoming undefined
我正在尝试向API发送一个单独的https请求,其中包含一组JSON格式的数据。
然而,在运行代码时,我首先遇到的问题是,所有内容都是未定义的。我注释掉了我的循环,试图解析我需要的数据,现在我只是试图console.log所有的数据。
然而,尽管在我的代码中任何地方都没有循环,但它似乎仍然在以某种方式循环。
这是我请求的代码:
function getCards() {
// make a request
var options = {
host: 'omgvamp-hearthstone-v1.p.mashape.com',
path: '/cards',
method: 'GET',
};
var req = https.request(options, function(res) {
console.log('STATUS ' + res.statusCode);
console.log('HEADERS ' + JSON.stringify(res.headers));
res.setEncoding('utf8');
res.on('data', function(data) {
//console.log(data);
updateCardsCollection(JSON.stringify(data));
});
});
req.on('error', function(e) {
console.log('problem with request: ' + e.message);
});
req.end();
}
奇怪的是,上面代码中的console.log(data)可以很好地注销所有数据。
function updateCardsCollection(data) {
var cardsRaw = [];
console.log("DATA");
console.log("===========================================================");
console.log(data.Classic);
}
这里的"经典"是API中的对象数组之一。
实施节点前,快递、猫鼬和翡翠。以下循环可以很好地解析数据:
for(var key in data) {
for(var i = 0; i < data[key].length; i++) {
console.log(data[key][i].cardId);
然而,上面循环的开头也会打印出一个未定义的错误。
我对这段代码似乎遇到的另一个奇怪问题是,当我在注释掉循环的情况下运行它时,"updateCardsCollection"函数中只有3个console.log。它多次记录这3行。尽管函数只被调用过一次。
知道为什么这个代码不再用于获取我的API数据吗?
首先,如果您想使用对象而不是字符串,则在尝试更新集合时需要使用JSON.parse
而不是JSON.stringify
。
但是,如果您先完成了,您的代码仍然无法工作,因为在data
处理程序中,您获得的是chunked
数据,而不是完全响应。看见https://nodejs.org/api/http.html#http_http_request_options_callback
你必须这样积累数据:
const req = https.request(options, res => {
const data = [];
res.on('data', d => data.push(d));
res.on('end', () => updateCardsCollection(JSON.parse(data.join(''))));
})
相关文章:
- "日期“;AJAX请求返回的类型值未定义
- 一台特定计算机的Ajax请求数据未定义/失败
- $.每个jquery循环打印一个“;未定义的“;对于getJSON请求后的每个元素,网格数据都会完美地打印出来
- 通过C#向区块链服务发送请求时未定义XMLHttpRequest
- 从 Angular 数据工厂中的 HTTP POST 请求接收未定义的结果
- React返回未定义的JSON请求
- AngularJS指令中的作用域未定义,控制器中有ajax请求
- xmlhttp请求后未定义$_POST
- 节点JSON https请求未定义
- '$'未定义Jquery ajax请求-javascript导入
- 在ColdFusion中表单范围中未定义AJAX请求的发布参数
- 使用 NodeJS 的请求模块进行 HTTP 身份验证,返回未定义的正文
- 自 2012 年 6 月 12 日以来,“未定义”随机附加到我网站上 1% 的请求 URL 中
- 多个 ajax 请求未定义
- 类型错误:在 ASP.NET 中触发 AJAX 请求时,未定义不是一个函数
- 请求 JSON 时获取“未定义不是一个函数”
- 未定义使用 HTTP GET 请求返回对象
- AJAX 请求导致“未定义不是对象”错误
- 未捕获的ReferenceError:未定义请求
- 谷歌方向错误:未定义请求