【发布时间】:2017-10-24 10:11:42
【问题描述】:
在人们的大力帮助下,我在 node.js 中摸索,我正在努力将 GET 请求的主体放入变量中。
这是目前为止的代码:
var speechOutput;
var myCallback = function(data) {
console.log('got data: '+data);
speechOutput = data;
};
var usingItNow = function(callback) {
var http = require('http');
var url = 'http://services.groupkt.com/country/get/iso2code/IN';
var req = http.get(url, (res) => {
var body = "";
res.on("data", (chunk) => {
body += chunk;
});
res.on("end", () => {
var result = JSON.parse(body);
callback(result);
});
}).on('error', function(e){
console.log("Got an error: ", e);
});
};
usingItNow(myCallback);
我正在使用其他帖子中的示例来尝试将 GET 请求的主体放入 SpeechOutput 变量中,但它以未定义的形式出现。
最终我想要 SpeechOutput 中的 RestResponse.result.name,但我想我会一次迈出这一步。有没有人可以指点一下?
除此之外,我还尝试了以下方法,但仍然未定义 - 也许代码存在更大的问题?它甚至似乎没有进入解析。
res.on("end", () => {
// var result = JSON.parse(body);
callback('result');
});
将callback('result'); 行放在var req = http.get(url, (res) => { 行之前会返回“结果”,但其他任何内容都未定义或导致错误。
【问题讨论】:
-
我认为您将 GET 请求的(不存在的)正文与响应的正文混淆了。
-
您已经确定
result变量的值是undefined……但您还没有回过头来找出原因。查看body的值。 -
当我运行该代码时,我得到的输出是
got data: [object Object]。没有错误。没有undefined的迹象。我无法重现您描述的问题。