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

查看:108
本文介绍了javascript - 如何用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,你试试你自己有效的。希望能帮到你

这篇关于javascript - 如何用NodeJS的http模块获取ajax返回的json数据?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆