nodejs接收表单写入mysql_NodeJS提交表单存数据库(转)
姓名:
性別:
年齡:
手機:
$('#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);
}
})
})
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-Control-Allow-Origin:*"); ?//*表示允許任何域向我們的服務端提交請求
header("Access-Control-Allow-Origin:http://www.test.com"); //只允許指定的域
(NodeJS環境)
res.setHeader("Access-Control-Allow-Origin","*");
執行時,可能提示cannot find moudle 'MySQL',請在項目目錄下安裝mysql模塊即可:npm install mysql
頂0踩
總結
以上是生活随笔為你收集整理的nodejs接收表单写入mysql_NodeJS提交表单存数据库(转)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux gedit(linux ge
- 下一篇: r语言 中断r的输入_R语言_004数据