不成功的POST请求处理

<form method="POST" action="/profile"> <input name="name" type="text"><br/> <input name="password" type="password"><br/> <input type="submit"> </form> 

我试图发送一个POST请求到一个node.js文件使用这个表单和处理请求我做了以下后创build服务器:

 if (request.method === 'POST') { var data = '', dataFull; request.on('data', function (chunk) { data += chunk; }).on('end', function () { dataFull = queryString.parse(data); }); console.log(dataFull); } 

但控制台只是logging未定义,而不是logging对象。 并尝试logging数据variables,但它没有logging

谁能解释为什么?

这是因为在达到console.log(dataFull)语句时dataFullvariables未被填充。 你绑定dataend的callback是asynchronous的,只有在尊重事件发生时才会被触发。 查看这个链接了解更多关于asynchronouscallback(和更多)。
就代码而言,你可以做这样的事情,

 if (request.method === 'POST') { let data = ''; request.on('data', function (chunk) { data += chunk; // Too much POST data, kill the connection! // someone can kill node by uploading an endless file! // 1e6 === 1 * Math.pow(10, 6) === 1 * 1000000 ~~~ 1MB if(data.length > 1e6){ request.connection.destroy(); } }).on('end', function () { let dataFull = queryString.parse(data); console.log(dataFull); //- now you can access the fields as dataFull['name'] etc. //- maybe call a callback or resolve a promise here //- cb(null, dataFull) or resolve(dataFull) }); } 

PS从这个SO回答采取的身体nuking的例子,这是评论