我无法在我的NodeJs服务器中收到POST请求

我真的是新的NodeJs(我有一些C#Asp.Net MVC和Rails的知识,所以我已经有了MVC的概念)。 我正在关注“Node Beginner”(由Manuel Kiessling撰写)。 我只是简单地用提交button创build了一个表单。 重点是我没有抓住我的服务器端的post。

这是我的服务器代码:

var http = require("http"); var url = require("url"); function start(route, handle) { function onRequest(request, response) { var postData = ""; var pathname = url.parse(request.url).pathname; console.log("Requisition received for " + pathname + "."); request.setEncoding("utf8"); request.on("data", function(postDataChunk) { postData += postDataChunk; console.log("Receiving part of data from POST '" + postDataChunk + "'."); }); request.addListener("end", function() { route(handle, pathname, response, postData); }); } http.createServer(onRequest).listen(8888); console.log("Server started"); } exports.start = start; 

当我启动我的应用程序,并进入本地主机:8888 /开始我在控制台中的所有日志输出。 但是当我填写表格并尝试提交时,没有任何反应。 控制台输出

我究竟做错了什么? 邮政也是一个请求,对不对? 为什么行console.log(“收到的请求”+“pathname +”。“); 当我提交时没有被执行?

PS:所有的代码和其他模块可以在我的github上findhttps://github.com/ricardovsilva/nodeJs-beginnerBook

我克隆你的回购,并看看它。 它看起来像你的元标记的content属性上缺less一个结束语引号:)

我真的很讨厌把标记放在这样的魔术string中(因为这个原因),但是如果这是你必须要做的事情,那么我推荐这个小技巧来使它更容易阅读:

 var body = [ '<html>', ' <head>', ' <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />', ' </head>', ' <body>', ' <form action="/upload" method="POST">', ' <textarea name="text" rows="20" cols="60"></textarea>', ' <input type="submit" value="Send text" />', ' </form>', ' </body>', '</html>' ].join(''); 

这样,你所有的标签缩进都是string的一部分,如果你有代码格式化程序,它不会被破坏。

尽pipe如此,在您完成基本的书本学习之后,我强烈build议您开发一个像Express这样的框架。

PS – Chrome开发人员工具中的“networking”标签是您的朋友:D

你可以从那里看到你的表单没有向服务器请求:)

我发现了这个问题。 当我看由检查员生成的HTML,我看到该表单没有被创build。 如果我在生成HTML的过程中看到更深入的内容,我发现这是一个错误,而这正在破坏html,实际上POST永远不会发生,解决了这个问题,现在一切正常,我也更新了github上的代码。