-
姓名:
-
性别:
-
年龄:
-
手机:
$(‘#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踩