【问题标题】:how to call node js function when a html button is clicked?单击html按钮时如何调用节点js函数?
【发布时间】:2019-08-19 23:06:40
【问题描述】:

我想创建一个部署按钮,单击该按钮时应将容器部署到我的 kubernetes 集群上。因此,每当单击 html 按钮时,我想调用一个 node.js 文件,该文件将执行命令“kubectl apply” -f tomcat.yaml"。那么如何在点击html按钮时调用node.js文件。听说可以使用AJAX实现。

HTML页面

<!DOCTYPE html>
<html>
<body>
    <h3>Example of a Deploy and Decommission Button</h3>
    <button onclick="myFunction()">Deploy</button>
    <button onclick="myFunction()">Decommission</button>
</body>
</html> 

运行 kubectl 命令的 node.js 文件

var process = require('child_process');
process.exec('kubectl apply -f tomcat.yaml',function (err,stdout,stderr) {
    if (err) {
        console.log("\n"+stderr);
    } else {
        console.log(stdout);
    }
});

如果有人可以向我展示如何在单击按钮时调用 node.js 文件,使用我的代码作为我个人理解的示例,这对我很有帮助。 我听说可以使用 AJAX 调用服务器端代码或获取请求。但是有人可以通过使用我的 html 和 node.js 文件作为示例向我展示一个示例。请帮助。

【问题讨论】:

  • 在浏览器中通过 Javascript 对服务器进行 Ajax 调用的简单搜索可以帮助您入门,如果遇到困难,您可以提出更具体的问题。可以启动here,查看fetch()界面。您需要将您的服务器端代码放入 Web 服务器,以便您可以从您的页面 Javascript 向您的 Web 服务器进行 Ajax 调用。
  • 其实nodejs是在后端运行的,所以你可以使用socket或者来自frontend/html的http请求触发事件

标签: html node.js


【解决方案1】:

你可以在 nodejs 中用 express like 做一个端点

    const app = require("express")();
    const process = require('child_process');
    app.post("/createContainer", (req, res) => {
     process.exec('kubectl apply -f tomcat.yaml',function (err,stdout,stderr) {
      if (err) {
        console.log("\n"+stderr);
      } else {
        console.log(stdout);
      }
    });
   });
   app.list(80);

当你这样做时,你只需要在前端进行 AJAX 调用

$("#myBtn").click(() => {
  $.post("/createContainer").done(() => {
   console.log("container created")
  });
});

【讨论】:

  • 好的,我已经完成了这里指定的所有更改,但是我正在使用 apache2 服务器运行 html 页面
  • 当我单击 html 按钮时,我希望它与 node.js 文件进行通信
  • 听说node使用自己的服务器,请问如何建立这个连接
猜你喜欢
  • 1970-01-01
  • 2020-08-29
  • 1970-01-01
  • 2021-09-08
  • 1970-01-01
  • 2020-12-23
  • 1970-01-01
  • 2015-02-27
  • 1970-01-01
相关资源
最近更新 更多