NodeJS提出フォーム保存データベース
5071 ワード
NodeJS提出フォーム
index.
テストデータベースはtestライブラリのuserテーブルで、フィールドはid、name、sex、age、telです.
プロジェクトをサーバー環境に置いて、nodeはserver.jsを実行して、フォームを提出すればいいです.
注意:クロスドメイン問題のため、CORSソリューションを使用します.
JSONPは伝送データ量が大きいので、POST方式で提出する必要があります.CORS技術(ドメイン間リソース共有)を使用します.
CORSはドメインをまたいでアクセスするメカニズムを定義し、ドメイン上のネットワークアプリケーションが別のドメインにドメインをまたぐAJAX要求を提出することができます.サーバーから応答ヘッダを送信すればいいです.
例:(PHP環境)
header(「Access-Coontrol-Alllow-Origin:*」);何をしてもいいですか?サービスにお願いします.
header(「Access-Coontrol-Alllow-Origin:http://www.test.com)///指定されたドメインのみ許可します.
(NodeJS環境)
res.set Header(「Access-Coontrol-Origin」、「*」)
実行時、cannot find moudle'mysqlを提示することができます.プロジェクトディレクトリの下にmysqlモジュールをインストールしてください.
index.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<link rel="stylesheet" href="css/reset.css" />
<link rel="stylesheet" href="css/index.css" />
<title></title>
</head>
<body>
<form>
<ul>
<li>
<label> :</label>
<input type="text" name="name" id="name" />
</li>
<li>
<label> :</label>
<input type="text" name="sex" id="sex" />
</li>
<li>
<label> :</label>
<input type="text" name="age" id="age" />
</li>
<li>
<label> :</label>
<input type="text" name="tel" id="tel" />
</li>
<li>
<input type="button" value=" " id="ok_btn" />
</li>
</ul>
</form>
<script src="js/jquery-1.8.3.min.js"></script>
<script>
$('#ok_btn').on('click',function(){
var name = $.trim($('#name').val()),
sex = $.trim($('#sex').val()),
age = $.trim($('#age').val()),
tel = $.trim($('#tel').val()),
data = {name : name,sex : sex,age : age,tel : tel};
$.ajax({
type : 'POST',
url : 'http://localhost:1337/',
data : data,
success : function(data){
console.log(data);
}
})
})
</script>
</body>
</html>
server.jsテストデータベースはtestライブラリのuserテーブルで、フィールドはid、name、sex、age、telです.
var http = require('http');
var querystring = require('querystring');
var mysql = require('mysql');
//
var server = http.createServer(function(req,res){
if(req.url !== 'favicon.ico'){
var params;
req.on('data',function(data){
// querystring parse
params = querystring.parse(decodeURIComponent(data));
})
req.on('end',function(){
console.log(' ');
connect(params);
})
// Access-Control-Allow-Origin
res.setHeader('Access-Control-Allow-Origin','*');
// JSON
res.writeHead(200,{'Content-Type' : 'application/json'});
res.end(JSON.stringify({status : 1}));
}
}).listen(1337,'127.0.0.1');
server.on('error',function(e){
if(e.code == 'EADDRINUSE'){
console.log(' ');
}
})
// 1
server.setTimeout(60*1000,function(socket){
console.log(' ');
console.log(socket);
})
server.on('close',function(){
console.log(' ');
})
//
function connect(params){
var connection = mysql.createConnection({
host : 'localhost',
port : 3306,
database : 'test',
user : 'root',
password : ''
});
connection.connect(function(err){
if(err){
console.log(' mysql ');
}else{
console.log(' mysql ');
connection.query('insert into user set ?',{
name : params.name,
sex : params.sex,
age : params.age,
tel : params.tel
},function(err,result){
if(err){
console.log(' ');
}else{
console.log(' ');
connection.end();
}
})
}
})
}
接続池を使ってデータベースに接続する//
var pool = mysql.createPool({
host : 'localhost',
port : 3306,
database : 'test',
user : 'root',
password : ''
});
function connect(params){
pool.getConnection(function(err,connection){
if(err){
console.log(' mysql ');
}else{
console.log(' mysql ');
connection.query('insert into user set ?',{
name : params.name,
sex : params.sex,
age : params.age,
tel : params.tel
},function(err,result){
if(err){
console.log(' ');
}else{
console.log(' ');
// ,
connection.release();
//
//pool.end();
}
})
}
})
//
pool.on('error',function(err){
if(err.code === 'PROTOCOL_CONNECTION_LOST'){
console.log(' mysql ');
//3
setTimeout(function(){
connect();
},3000);
}else{
throw err;
}
})
}
テスト:プロジェクトをサーバー環境に置いて、nodeはserver.jsを実行して、フォームを提出すればいいです.
注意:クロスドメイン問題のため、CORSソリューションを使用します.
JSONPは伝送データ量が大きいので、POST方式で提出する必要があります.CORS技術(ドメイン間リソース共有)を使用します.
CORSはドメインをまたいでアクセスするメカニズムを定義し、ドメイン上のネットワークアプリケーションが別のドメインにドメインをまたぐAJAX要求を提出することができます.サーバーから応答ヘッダを送信すればいいです.
例:(PHP環境)
header(「Access-Coontrol-Alllow-Origin:*」);何をしてもいいですか?サービスにお願いします.
header(「Access-Coontrol-Alllow-Origin:http://www.test.com)///指定されたドメインのみ許可します.
(NodeJS環境)
res.set Header(「Access-Coontrol-Origin」、「*」)
実行時、cannot find moudle'mysqlを提示することができます.プロジェクトディレクトリの下にmysqlモジュールをインストールしてください.