从单击事件运行node.js文件

时间:2017-07-21 15:30:44

标签: node.js express

我是node.js的新手。我用带有ejs模板的express / node.js连接api。我想将一些信息从浏览器推送到api。此刻,我可以从命令行推送。我知道我不能直接从浏览器调用node.js文件但是我想知道当我在表单上单击提交时它是否可以调用node.js文件并运行它...我应该使用什么,模块,路由,ajax,或您推荐的任何其他解决方案?我很感激帮助。

2 个答案:

答案 0 :(得分:0)

嗯,这是一个奇怪的问题。您的Node应用程序需要侦听HTTP请求或WebSocket连接(可能使用一些抽象,如Socket.io,它可以提供WebSocket不可用的回退)并处理在套接字上发送的请求或消息。在那些处理程序中,您可以做任何您需要的事情。这只是客户端/服务器架构的基本原则。

现在,要选择最适合您需求的技术,一切都取决于您进行沟通的频率,是否需要实时沟通,需要传递多少数据,如果您需要支持服务器发起的服务或仅由客户端等发起的数据。

回答你的问题 - 是的,你可以提交一份表格并让它在你的Node应用程序中执行一些代码。这正是表单的工作方式 - 它们建立连接,通常与查询字符串中的数据进行GET,或者使用正文中的数据进行POST(两者都可以通过Node轻松读取),然后后端的处理程序处理请求,不管它是什么需要并发送回复。

使用expressbody-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调用的响应。然后,您可以接受此响应并在网页中本地使用它,无论您喜欢什么。