gpt4 book ai didi

node.js - 我无法在 NodeJs 服务器中接收 POST 请求

转载 作者:太空宇宙 更新时间:2023-11-04 00:54:45 25 4
gpt4 key购买 nike

我对 NodeJs 真的很陌生(我对 C# Asp.Net MVC 和 Rails 有一些了解,所以我已经掌握了 MVC 概念)。我正在关注《The Node Beginner》(Manuel Kiessling 着)一书。我只是停留在创建一个带有提交按钮的简单表单的地方。关键是我没有在服务器端捕获该帖子。

这是我的服务器代码:

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;

当我启动应用程序并转到 localhost:8888/start 时,我会在控制台中看到所有日志输出。但是当我填写表格并尝试提交时,什么也没有发生。 Console Output

我做错了什么?发帖也是一种请求吧?为什么行 console.log("已收到 "+ 路径名 + "."); 的请求当我点击提交时没有被执行?

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

最佳答案

我克隆了你的存储库并查看了它。您的元标记的 content 属性似乎缺少右引号:)

我真的很讨厌将标记放在这样的魔术字符串中(正是出于这个原因),但如果这是你必须做的事情,那么我推荐这个小技巧,以使其更易于阅读:

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('');

这样,您的所有标记缩进都是字符串的一部分,如果您有代码格式化程序,则不会被代码格式化程序弄乱。

话虽如此,在您完成本书的基础学习之后,我强烈建议您深入研究诸如 Express 之类的框架。 .

PS - Chrome 开发者工具中的“网络”选项卡是您的 friend :D

您可以从那里看到您的表单根本没有向服务器发出请求:)

关于node.js - 我无法在 NodeJs 服务器中接收 POST 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30508136/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com