【发布时间】:2017-09-05 19:20:27
【问题描述】:
我想制作一个注册表单。按下“提交”按钮后,脚本会打开我的 MySql 数据库并在“用户”表中插入一个新行。
一切正常,除了浏览器无法解释 NodeJs require 函数。
其他一些帖子说要使用 browserify,但我想知道这是否可以在没有其他程序的情况下完成。
我的代码:
register.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title></title>
<script src = "index.js" type="text/javascript"></script>
<script src = "register.js" type = "text/javascript"></script>
<link rel="stylesheet" type="text/css" href = "register.css">
</head>
<body>
<form name = "registerForm" method = "post">
<p id = "fillRule">Username must contain lower or uppercase or _! Fill in all boxes except the job! Pass must contain small and uppercase letters and its lenght must be at least 6 char, max 10!</p>
<label for="username">Username:</label>
<input type = "text" id = "username" name = "username" onchange = "checkUser()"> <br/>
<label for="firstname">Firstname:</label>
<input type = "text" id = "firstname" name = "firstame" onchange = "checkFirst()"> <br/>
<label for="lastname">Lastname:</label>
<input type = "text" id = "lastname" name = "lastname" onchange = "checkLast()"> <br/>
<label for="job">Your job:</label>
<input type = "text" id = "job" name = "job" onchange="checkJob()"> <br/>
<label for="pass">Password:</label>
<input type = "text" id = "pass" name = "pass" onchange = "checkPass()"> <br/>
<label for="mail">E-mail:</label>
<input type = "email" id = "mail" name = "mail" onchange = "checkMail()"> <br/>
<input type = "button" value = "send" id = "gomb" disabled = "disabled" onclick = "registerButtonClick()">
</form>
</body>
</html>
index.js
//export {addUser};
// String formatting
if (!String.format) {
String.format = function(format) {
var args = Array.prototype.slice.call(arguments, 1);
return format.replace(/{(\d+)}/g, function(match, number) {
return typeof args[number] != 'undefined'
? args[number]
: match
;
});
};
}
//
var mysql = require("mysql");
function createConnection(hostName, userName, passwd, db)
{
const con = mysql.createConnection({
host: hostName,
user: userName,
password: passwd,
database: db
});
return con;
}
function openConnection(con)
{
con.connect(function (err) {
if (err) {
console.log('Error connecting to Db');
return;
}
console.log('Connection established');
});
}
function executeFullSelect(con, tableName)
{
const statement = "SELECT * FROM " + tableName + ";";
con.query(statement, function(err, rows)
{
if (err)
{
throw err;
}
console.log("Data received from " + tableName + ".\n");
console.log(rows);
/*for (var i = 0; i < rows.length; i++)
{
console.log(rows[i].UserName);
}*/
});
}
function insert(con, userName,firstName, lastName, job, mail, passwd)
{
const statement = String.format("call newUser(\"{0}\", \"{1}\", \"{2}\", \"{3}\", \"{4}\", \"{5}\");", userName, firstName, lastName, job, mail, passwd);
con.query(statement, function(err, rows)
{
if (err)
{
console.log("Error at insert");
return 0;
}
console.log(userName + " was successfully added:)");
return 1;
})
}
function closeConnection(con)
{
con.end(function (err) {});
}
function addUser(userName, firstName, lastName, job, mail ,passwd)
{
const con = createConnection("localhost", "root", "micimacko", "users");
openConnection(con);
if (!insert(con, userName, firstName, lastName, job, mail ,passwd))
{
closeConnection(con);
return 0;
}
closeConnection(con);
return 1;
}
register.js
function registerButtonClick()
{
const userName = document.forms["registerForm"]["username"].value;
const firstName = document.forms["registerForm"]["firstname"].value;
const lastName = document.forms["registerForm"]["lastname"].value;
const job = document.forms["registerForm"]["job"].value;
const mail = document.forms["registerForm"]["mail"].value;
const pass = document.forms["registerForm"]["pass"].value;
if (addUser(userName, firstName, lastName, job, mail, pass))
{
alert("added");
}
else
{
alert("failed");
}
}
【问题讨论】:
-
为什么要在网页中包含服务器端代码?
-
那是我的问题。我该怎么做才正确?
-
通过在 node.js 中运行 node.js 代码,而不是尝试将其包含在网页中。它们是完全不同的东西。您是否将 node.js 设置为服务器?
-
@SamiKuhmonen,现在是 2017 年,今天没有人真正知道哪些 JavaScript 代码应该放在哪里。 ;)
标签: javascript html mysql node.js web