NodeJS:读取JSON并将结果保存到变量

时间:2016-04-14 07:26:37

标签: javascript json node.js

我正在尝试使用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 });
    })

为什么我的名称年龄变量都未定义?我正在寻找类似的问题,有人说请求方法是异步的,我试图同步返回结果,是吗?如何同步返回结果并将其保存到变量?

2 个答案:

答案 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 });
            }
});