zoukankan      html  css  js  c++  java
  • Node学习笔记

    向服务器发送数据

    服务器端处理表单

    var qs=require('querystring');
    require('http').createServer(function(req,res){
        var body='';
        req.on('data',function(chunk){
            body+=chunk;
        });
        req.on('end',function(){
            res.writeHead(200);
            res.end('Done');
            console.log('
     got name 33[90m'+qs.parse(body).name+'33[39m
    ');
        }); 
    }).listen(3000);

    小tip:Node提供了querystring模块,可以方便对URL字符串进行解析,将一个字符串解析成一个对象,这样可以像处理头部信息对其进行处理

    客户端对应的处理

    var http=require('http'),qs=require('querystring')
    function send(theName){
        http.request({
        host:'127.0.0.1'
        ,port:3000
        ,url:'/'
        ,method:'POST'
    },function(res){
        res.on('data'function(){});
        res.setEncoding('utf8');
        res.on('end',function(){
            console.log('
     33[90m request complete!33[39m');
            process.stdout.write('
     your name:');
        });
    }).end(qs.stringify({name:theName}));
    }
    process.stdout.write('
     your name:');
    process.stdin.resume();
    process.stdin.setEncoding('utf-8');
    process.stdin.on('data',function(name){
        send(name.replace('
    ',''));
    });

    在上述代码中,数据是通过end方法发送的,和在服务器创建响应的方式一样。无须担心从服务器获取数据块的问题,当end事件减触发时,可以将完整的请求数据打印处来。

    使用 http.request() 时,必须调用 req.end(),以此来向服务器表明请求结束,即使请求的主体中没有任何数据。这里请求中的数据是name。

    有一个问题是,我发现要触发end事件,必须触发一个data事件(粗体部分),这样才能打印处end事件中的内容

  • 相关阅读:
    代码操作
    购物车
    利息计算器
    生成海报
    知识库
    JavaScript处理字符串--参照W3C
    C#输入排序-冒泡
    enum举例
    C# 表达式计算器----数据结构
    C# 测试单词的完美度
  • 原文地址:https://www.cnblogs.com/pengshuo/p/6668895.html
Copyright © 2011-2022 走看看