NodeJS提交表单存数据库
来源:互联网 发布:175凌波城输出数据 编辑:程序博客网 时间:2024/04/27 19:19
NodeJS提交表单
index.html
<!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,然后提交表单即可
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 0
- NodeJS提交表单存数据库
- nodejs模拟表单提交
- Nodejs 处理表单提交数据
- nodejs学习之表单提交
- nodejs实现表单数据的提交
- nodejs表单提交(上传图片)
- php表单提交至数据库
- 表单提交中文数据库变成???
- HTML提交表单用户选择的头像如何利用<select>标签提交到PHP并连接数据库进行存读操作
- 如何使用nodejs提交表单方式的post请求?
- NodeJS HTTP模块编写POST提交表单Demo
- nodejs querystring踩坑笔记----只能用于表单提交
- 【解决方案】nodejs关于post提交表单的中文乱码问题
- asp 写提交表单到数据库
- IE下表单提交存入数据库乱码
- Sturts2提交表单到数据库后乱码
- nodejs提交form表单并将提交信息显示在页面上
- 表单提交
- SimpleDateFormat格式化日期时间格式
- elf、hex转bin
- Python杂项
- Springmvc JSON 中文乱码
- Java注解实现拦截
- NodeJS提交表单存数据库
- 35个java代码优化总结
- 摄像头采集,framebuffer显示
- SQL Server 复制:计算机名和SQL SERVER中所能识别的服务器名称不一致
- 如何运送最多的货物(0-1背包)
- Heritrix 的主题抓取策略
- background-size兼容IE8解决方案
- Eclipse自动编译NDK/JNI的三种方法
- intellij 快捷键说明