日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

nodejs接收表单写入mysql_NodeJS提交表单存数据库(转)

發布時間:2023/12/2 数据库 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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提交表单存数据库(转)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。