首页 > 如何用NodeJS的http模块获取ajax返回的json数据?

如何用NodeJS的http模块获取ajax返回的json数据?

通过http模块获取一个数据值,如下:

 http.request(options,function(res){
    console.log('Status:'+res.statusCode)
    //console.log('Headers:'+JSON.stringify(res.headers))
    console.log(res.body)
    res.on('data',function(chunk){
        ...
    })
    res.on('end',function(){
        console.log('发送完毕')
    })
})

options配置:

var options = {
    host:'www.123.com',
    port:80,
    path:'/course/AjaxCourseMembers?ids='+ids,
    method:'GET',
    headers:{
        'Accept':'*/*',
        'Accept-Encoding':'gzip, deflate, sdch',
        .....
    }
}

输出的res.statusCode为200但是在res却得不到json数据,而通过jQuery是可以获取到正确数据的,请问是哪里的问题?


1.res.body里面不是用来获取返回数据的
2.在res.on('data')里面获取的chunk(Buffer类型)是返回的数据
3.你别自己把错误吞掉, 这样看不到错误了

var req = http.request(options,function(res){
    console.log('Status:'+res.statusCode)
    //console.log('Headers:'+JSON.stringify(res.headers))
    console.log(res.body)
    res.on('data',function(chunk){
        ...
    })
    res.on('end',function(){
        console.log('发送完毕')
    })
})

req.on('error', (e) => {
    console.log(`problem with request: ${e}`);
});
req.on('close', function() {
    console.log('connection closed!');
});
req.on('socket', function(socket) {
    console.log('socket size:'+socket.bufferSize);
    socket.on('data', function(data) {
        console.log('socket data:'+data);
    });
});
req.end();

4.报错read ECONNRESET 如果这个域名不是你的www.123.com, 服务端主动把你的请求连接关掉了, 我随便试了一个ids,你试试你自己有效的。希望能帮到你


怎么不用 request 模块

request(__URL__, function (error, response, body) {
    if (!error && response.statusCode === 200) {
        const data = JSON.parse(body);
        ...
    } else {
        ...
    }
});
【热门文章】
【热门文章】