简单节点读取POST

时间:2014-03-12 18:18:24

标签: node.js post

我试图通过nodejs读取POST数据。我有以下代码片段:

   var http = require("http");



console.log("Server created at 127.0.0.1:8989");


var server = http.createServer(handler).listen(8989);

function handler(req,res)
{
    console.log("Client Connected");
    // res.writeHead(200,{"Content-type": "text/html"});
    res.writeHead(200, {'Content-Type': 'text/html'});
    res.end('<html><body><form method="POST"><input type="text" name="name"><input type="submit" value="send"></form></body></html>');
    if(req.method==="POST")
    {
        var body="";
        console.log("Post is being sent");
        req.on('data',function handlePost(chunck){
        body+= chunck;
            });
        req.on("end",function(){
            console.log(body + "<--");
        })
    }




}\\

然而,该程序的行为就好像&#34;数据&#34;事件从未发生过? body变量永远不会被记录

由于

1 个答案:

答案 0 :(得分:1)

你应该把它变成if / else。正如你所拥有的那样,你总是在结束请求(使用res.end),无论它是否是帖子。

function handler(req,res)
{
    console.log("Client Connected");
    if(req.method==="POST")
    {
        var body="";
        console.log("Post is being sent");
        req.on('data',function handlePost(chunck){
        body+= chunck;
            });
        req.on("end",function(){
            console.log(body + "<--");
        })
    } else {
      res.writeHead(200, {'Content-Type': 'text/html'});
      res.end('<html><body><form method="POST"><input type="text" name="name"><input type="submit" value="send"></form></body></html>');
  }
}

第二个例子。在帖子后面再次返回表单。

function handler(req,res)
{
  console.log("Client Connected");
  if(req.method==="POST")
    {
      var body="";
      console.log("Post is being sent");
      req.on('data',function handlePost(chunck){
        body+= chunck;
      });
      req.on("end",function(){
        var name = body.match(/name=(\w+)/)[1];
        res.writeHead(200, {'Content-Type': 'text/html'});
        res.end('<html><body>Welcome back, ' + name + '<form method="POST"><input type="text" name="name" value="' + name + '"><input type="submit" value="send"></form></body></html>');
      });
    } else {
      res.writeHead(200, {'Content-Type': 'text/html'});
      res.end('<html><body><form method="POST"><input type="text" name="name"><input type="submit" value="send"></form></body></html>');
    }
}

第二个例子像这样运行...... 如果它不是POST,只需发送表单即可。 如果是POST,  收到尸体  什么时候完成  将消息与表单一起发送。