我是node.js的新手。我用带有ejs模板的express / node.js连接api。我想将一些信息从浏览器推送到api。此刻,我可以从命令行推送。我知道我不能直接从浏览器调用node.js文件但是我想知道当我在表单上单击提交时它是否可以调用node.js文件并运行它...我应该使用什么,模块,路由,ajax,或您推荐的任何其他解决方案?我很感激帮助。
答案 0 :(得分:0)
嗯,这是一个奇怪的问题。您的Node应用程序需要侦听HTTP请求或WebSocket连接(可能使用一些抽象,如Socket.io,它可以提供WebSocket不可用的回退)并处理在套接字上发送的请求或消息。在那些处理程序中,您可以做任何您需要的事情。这只是客户端/服务器架构的基本原则。
现在,要选择最适合您需求的技术,一切都取决于您进行沟通的频率,是否需要实时沟通,需要传递多少数据,如果您需要支持服务器发起的服务或仅由客户端等发起的数据。
回答你的问题 - 是的,你可以提交一份表格并让它在你的Node应用程序中执行一些代码。这正是表单的工作方式 - 它们建立连接,通常与查询字符串中的数据进行GET,或者使用正文中的数据进行POST(两者都可以通过Node轻松读取),然后后端的处理程序处理请求,不管它是什么需要并发送回复。
使用express
和body-parser
:
const app = require('express')();
const { urlencoded } = require('body-parser');
app.use(urlencoded({ extended: true }));
app.use('/', (req, res) => {
const { method, path } = req;
const { x } = req.body;
console.log(`Client request: ${method} ${path} (x = ${x})`);
res.end(`
<!doctype html>
<html>
<head>
<title>Form handling example</title>
</head>
<body>
<p>x = ${x}</p>
<form method="POST" action="/">
Enter x: <input type="text" name="x">
<input type="submit" value="Submit">
</form>
</body>
</html>
`);
});
app.listen(4447, () => console.log('Listening on http://localhost:4447/'));
创建一个新目录,将此代码保存为server.js
,运行:
npm init -y
npm install express body-parser -S
node server.js
并在浏览器中访问打印的网址。
当您单击“提交”按钮时,您将看到Node应用程序中将会发生什么。
答案 1 :(得分:0)
您的节点应用程序将设置一个接受GET或POST请求的路由。然后它执行一些逻辑并在响应中返回一些数据。
您的网页将通过AJAX调用将表单作为GET或POST发送到您的节点路由,同样它将收到来自AJAX调用的响应。然后,您可以接受此响应并在网页中本地使用它,无论您喜欢什么。