Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用node.js和JavaScript从HTML简单表单插入MySQL表_Javascript_Html_Mysql_Node.js - Fatal编程技术网

使用node.js和JavaScript从HTML简单表单插入MySQL表

使用node.js和JavaScript从HTML简单表单插入MySQL表,javascript,html,mysql,node.js,Javascript,Html,Mysql,Node.js,好吧,经过3天的努力,我被绊倒了,我只是觉得完全不知所措。我觉得自己就像一个迷失在未知世界中的小孩(我是大型机开发人员),开始感到非常沮丧,所以我决定寻求真正的帮助。我不会发布任何代码,因为它在任何程度上都没有帮助 我想要但仍然无法实现的: 输入“localhost:8080/datos.html”,其中有2个“文本框”和一个按钮。按下按钮后,我希望使用Node.js将2文本框(“name”和“password”)的数据存储在MySQL数据库中 情况如下: 我正在使用Windows7 No

好吧,经过3天的努力,我被绊倒了,我只是觉得完全不知所措。我觉得自己就像一个迷失在未知世界中的小孩(我是大型机开发人员),开始感到非常沮丧,所以我决定寻求真正的帮助。我不会发布任何代码,因为它在任何程度上都没有帮助

我想要但仍然无法实现的:

  • 输入“localhost:8080/datos.html”,其中有2个“文本框”和一个按钮。按下按钮后,我希望使用Node.js将2文本框(“name”和“password”)的数据存储在MySQL数据库中
情况如下:

  • 我正在使用Windows7
  • Node.js安装在我的电脑上,我可以在cmd中执行“Node server.js” 终端机,一切正常
  • 我可以,在'server.js'中,连接到MySQL数据库并进行查询,结果很好,我也可以插入,一切都很好
  • 在同一个文件夹“example.js”中,我有一个名为“datos.html”的文件
  • 使用“url解析”,我设法在浏览器(chrome)中写入“localhost:8080/datos.html”,以便在通过Node.js启动“server.js”后正确显示“datos.html”(2文本框和按钮显示正确)
现在问题开始了:我无法将文本框的数据插入MySQL数据库中。。。正如我所说,通过server.js插入数据不是问题,从server.js“获取”带有“document.getElementByI()”的文本框值也不是问题。问题是,我找不到完成这项工作的方法。 我知道这可能是一个蹩脚的问题,而且我一直在考虑不去做,但上帝啊,对于一个习惯COBOL、JCL和CICS的人来说,web开发实在是太痛苦了

作为参考,我阅读了W3Schools关于HTML、Ajax、Node.js的“教程”和指南,可以做其中所示的示例,但不能链接这些东西,使所有东西都成为功能性的东西

请注意,我的问题不是“技术性的”,我知道如何查询SQL表,或者如何“启动”节点(以基本方式,tho),我知道如何制作(同样)简单的HTML并从node.js显示它;但问题是“如何做某事”,这很简单,但我只是还不能做到


任何视频、手册、教程、课程,或者任何你能帮助我实现这一简单目标的东西,我都会非常感激

如果您还没有,您可能应该使用一个节点框架,作为传入请求的路由器。多年来最受欢迎的是Express

一旦你这样做了,你就可以处理像这样的请求

app.get("/datos", (req, res) => {
        // Serve the form logic here
    });

app.post("/datos", (req, res) => {
        // Handle the form submission logic here
    });

你在正确的轨道上。为了达到预期目标,请执行以下操作

1)您可以像Jason在前面的回答中提到的那样使用express来处理所有事情 现在,作为一个应用程序,客户端和服务器在同一台机器上进行测试,就像我在我的 应用程序,直到您准备将客户端服务器与 一个接一个

2)为了使用MySQL作为存储引擎,而不是我 使用SqlLite使用来自

3)创建一个HTML文件来处理输入,如下所示

4)创建client.js文件以将请求发送到NodeJS服务器

5)创建server.js文件以接收请求并在我的例子中使用SQLite处理插入

6)要创建数据库,请在glitch console中运行以下命令

~sqlite demo      <---demo is name of db in sqlite3
% create table userlist(user, password);
CTRL+D            <---exit
index.html

<!DOCTYPE html>
<html lang="en">
  <head>
    <title>Welcome to Glitch!</title>
    <meta name="description" content="A cool thing made with Glitch">
    <link id="favicon" rel="icon" href="https://glitch.com/edit/favicon-app.ico" type="image/x-icon">
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">

    <!-- import the webpage's stylesheet -->
    <link rel="stylesheet" href="/style.css">
    
    <!-- import the webpage's client-side javascript file -->
    <script src="/client.js"></script>
  </head>
  <body>
    <input type="text" id="user"/>
    <input type="text" id="password"/> 
    <button onclick="submit()">Send</button>
  </body>
</html>
将其插入server.js中Insert(request)下的post处理程序的else块中,以便能够发回表值并在客户端中查看

db.all('SELECT * from userlist', function(err, rows) {
        response.send(rows);
    });
userRequest.onreadystatechange = function() {
  if (this.readyState == 4 && this.status == 200) {
    var rows = JSON.parse(this.responseText);
    var tbl = "<table border=1>";
    tbl += "<thead><td>Name</td><td>Password</td></thead>";
    for (var i = 0; i < rows.length; i++)
    {
      tbl+="<tr><td>"+rows[i].user+"</td><td>"+rows[i].password+"</td></tr>";
      console.log('record:', JSON.stringify(rows[i]));
    }
    tbl += "</table>";
    document.getElementById("tbl").innerHTML = tbl;
  }
}
在client.js的submit函数中插入此项,以查看提交时的表值

db.all('SELECT * from userlist', function(err, rows) {
        response.send(rows);
    });
userRequest.onreadystatechange = function() {
  if (this.readyState == 4 && this.status == 200) {
    var rows = JSON.parse(this.responseText);
    var tbl = "<table border=1>";
    tbl += "<thead><td>Name</td><td>Password</td></thead>";
    for (var i = 0; i < rows.length; i++)
    {
      tbl+="<tr><td>"+rows[i].user+"</td><td>"+rows[i].password+"</td></tr>";
      console.log('record:', JSON.stringify(rows[i]));
    }
    tbl += "</table>";
    document.getElementById("tbl").innerHTML = tbl;
  }
}
userRequest.onreadystatechange=function(){
if(this.readyState==4&&this.status==200){
var rows=JSON.parse(this.responseText);
var tbl=“”;
tbl+=“名称密码”;
对于(变量i=0;i
userRequest.onreadystatechange = function() {
  if (this.readyState == 4 && this.status == 200) {
    var rows = JSON.parse(this.responseText);
    var tbl = "<table border=1>";
    tbl += "<thead><td>Name</td><td>Password</td></thead>";
    for (var i = 0; i < rows.length; i++)
    {
      tbl+="<tr><td>"+rows[i].user+"</td><td>"+rows[i].password+"</td></tr>";
      console.log('record:', JSON.stringify(rows[i]));
    }
    tbl += "</table>";
    document.getElementById("tbl").innerHTML = tbl;
  }
}