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

  • Post author:
  • Post category:mysql


  • 姓名:

  • 性别:

  • 年龄:

  • 手机:

$(‘#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踩



版权声明:本文为weixin_39849153原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。