我正在尝试使用NodeJS创建一个小网站,我正在使用http://www.mywebsite.com/json中的JSON
JSON看起来像这样:
{
"response:" {
name: "John",
age: 29,
}
}
我的 app.js 看起来像这样(没有require,app.set等..)
app.route('/add')
.get(function(req, res) {
var url = "http://www.mywebsite.com/json";
var name;
var age;
request({
url: url,
json: true
}, function(err, res, data) {
if(!err) {
name = data.response.name;
age = data.response.age;
}
});
res.render('add', { name:name, age:age });
})
为什么我的名称和年龄变量都未定义?我正在寻找类似的问题,有人说请求方法是异步的,我试图同步返回结果,是吗?如何同步返回结果并将其保存到变量?
答案 0 :(得分:2)
始终记住请求是异步的事实,您必须等到请求完成才能呈现页面。一种方法是在请求的回调中呈现页面:
app.route('/add')
.get(function(req, res) {
var url = "http://www.mywebsite.com/json";
var name;
var age;
request({
url: url,
json: true
}, function(err, res, data) {
if(!err) {
name = data.response.name;
age = data.response.age;
}
res.render('add', { name:name, age:age });
});
})
答案 1 :(得分:1)
尝试这个:
request({
url: url,
json: true
}, function(err, res, data) {
if(!err) {
name = data.response.name;
age = data.response.age;
res.render('add', { name:name, age:age });
}
});