表单提交后数据无法被nodejs获取?

const fs = require('fs');
const qs = require('querystring');
require('http').createServer(function (req,res) {
    if (req.url === '/'){
        res.writeHead(200,{'content-type':'text/html'});
        res.end(['<form method="post" action="/url">',
            '<input type="text" name="name">',
            '<input type="submit">',
            '<button>Submit</button>',   //
            '</form>'].join(''))
    }
    else if ('/url' === req.url && req.method==='POST') {
        res.writeHead(200,{'content-type':'text/plain'});
        var body = '';
        req.on('data',function (chunk) {
            body += chunk;
        });
        console.log(body)  //无输出
        res.end('hello world' +qs.parse(body).name +'  end')//输出undefined 
    }


}).listen(3000);

为什么在表单中输入数据后提交 无法被node获得,body变量无内容??

阅读 2k
2 个回答

只有req可读流处理完之后才能响应,此时会触发end事件,所以else if逻辑不对,修改后的如下。

 else if ('/url' === req.url && req.method==='POST') {
        res.writeHead(200,{'content-type':'text/plain'});
        var body = '';
        req.on('data',function (chunk) {
            body += chunk;
        });
        req.on('end',function(){
        res.end('hello world' +qs.parse(body).name +'  end')
        })
        
    }

你log输出的时机不对

        req.on('data',function (chunk) {
            body += chunk;
            console.log(body); 
        });
        
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题