我试图通过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变量永远不会被记录
由于
答案 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, 收到尸体 什么时候完成 将消息与表单一起发送。