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踩

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/346123.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

r语言 中断r的输入_R语言_004数据输入

现实的情况是,我们大部分遇到的都是表格数据,在R语言里面叫数据框,数据来源一般不可能我们自己在程序开始前手动录入,正常的逻辑是从外面读取现成的数据,再预处理、建模什么的。根据经验,现在的数据来源主要…

我的机器人现在无处可去。 无家可归。 无服务器。

我通常会关注各种网站-有关最新出版物,热门新优惠,限时游戏和竞赛等。 其中大多数不提供“干净”的通知系统,例如RSS feed。 因此,我经常不得不刮擦他们HTML才能达到我所需要的。 这意味着我经常需要运行一些自定义的字符串操作…

mysql怎么对比表结构_mysql查看表结构2种方式对比

C语言之带有返回值的函数带有返回值的函数 语法: 类型 函数名(参数列表){ 函数体; return 数据; } 例: int getSum(int num1,int num2){ int sum num1 num2 ...mysql 列转行,合并字段数据表: 列转行:利用max(case when then) max---聚合函数 取最大值 (case cours…

dubbo 消费者也要暴露端口吗_一文详细解读 Dubbo 中的 http 协议

(给ImportNew加星标,提高Java技能)转自:Kirito的技术分享,作者:kiritomoe太阳红彤彤,花儿五颜六色,各位读者朋友好,又来到了分享 Dubbo 知识点的时候了。说到 Dubbo 框架支持的协议,…

非一致性访存系统_Hibernate事实:访存策略的重要性

非一致性访存系统在使用ORM工具时,每个人都承认数据库设计和实体到表映射的重要性。 这些方面引起了很多关注,而诸如获取策略之类的事情可能只是推迟了。 我认为,不应将实体获取策略与实体映射设计分开,因为除非经过适当设计&…

应用新的JDK 11字符串方法

在“ 使用JDK 11的Java字符串上的新方法 ”和“ String#repeat即将加入Java? ”,我讨论了JDK 11引入Java String的六个新方法。 可用的早期访问JDK 11构建已经包含了这些新方法,在这篇文章中,我将使用其中的一种早期访…

mysql 传统数据恢复_mysql 数据恢复实例

基于二进制日志数据恢复mysql数据恢复演练实例如何按需截取日志基于position好的截取--start-position--stop-positionmysqlbinlog --start-position219 --stop-position1272 /data/binlog/mysql-bin.000002 >/tmp/back.sql恢复删除库 mysql> drop database oldboy1;mysq…

mysql 强制读主库_laravel(lumen)配置读写分离后,强制读主(写)库数据库,解决主从延迟问题...

在Model里面加上下面这句,强制读主(写)库数据库,解决主从延迟问题。public static function boot(){//清空从连接,会自动使用主连接DB::connection()->setReadPdo(null);}-------------------------------------------------------------------------…

为什么需要切换到在线签署文档和合同

嘿,怪胎, 今天,我们为您带来一些不同。 无论您是开发人员,经理还是设计师,这都会提高您的生产力和效率。 对于公司和个人而言,良好地管理文书工作是强大基础的最重要部分之一。 将工作流程从纸质转移到数…

github怎么自动更新被人更新过的项目_GitHub 的这 8 个实用技巧,95%的人不知道...

知道的越多,不知道的就越多,业余的像一棵小草!编辑:业余草来源:https://www.xttblog.com/?p49881、一秒钟把Github项目变成前端网站GitHub Pages大家可能都知道,常用的做法,是建立一个gh-pages…

mysql 未知列_mysql – ‘字段列表’连接中的未知列’..’

您在此查询中至少有两个问题.首先,当您使用反向标记来分隔标识符时,必须将表别名与列名称分开.verk.id -- WRONGverk.id -- CORRECT原因是SQL实际上允许您定义包含标点符号,空格等的列名称,如果您分隔列名称.这就是你似乎正在做的事情,请求一个名为verk.id的列verk.id -- ALSO …

java 注解 属性 类型_收藏!你一定要知道的Java8中的注解

全文共3002字,预计学习时长6分钟海中有大量的注解!JavaSE 1.5中首次引入了注解。Java注解的目的是允许程序员编写关于其程序的元数据。在OracleDocs中,注解的定义是:“注解是元数据的一种形式,它提供的数据与程序本身无关。”注解可以在代码的…

camel 多个 to_具有多个查询参数的Camel CXF服务

camel 多个 to出色的Apache Camel团队忙于解决查询中多个参数的处理问题,这是一种解决方法。 希望本文将在下一版本的Camel中不再使用。 (目前,我使用2.7.5) 问题 大于1的查询参数作为null值传递给Camel-CXF服务。 假设网址中有四…

select * from where 三个条件_VBA学习笔记70: Select语句基础

学习资源:《Excel VBA从入门到进阶》第72集 by兰色幻想 这节课来详细讲解Select语句。 Select 字段 from 表 where 条件 例:从sheet1中筛选全部数据。 * 表示全部字符,无条件可以省略where。 Select * from [sheet1$] 如果是对表中特定单元格区域进行查找,可以在[sheet1$]的…

使用Servlet和Bootstrap上传Ajax文件

介绍 在本教程中,我们将检查Ajax文件上传如何与Servlet一起使用。 同样,我们将用Bootstrap装饰表单并通过jQuery Ajax上传ajaxify文件。 实作 基本的servlet实现是相同的。 因此,我们需要做的第一件事是更新我们的web.xml文件并为我们的应用…

linux文件系统dentry_Linux文件系统(四)---三大缓冲区之inode缓冲区 (内存inode映像 )...

在文件系统中,有三大缓冲为了提升效率:inode缓冲区、dentry缓冲区、块缓冲。(内核:2.4.37)一、inode缓冲区为了加快对索引节点的索引,引入inode缓冲区,下面我们看Linux/fs/inode.c代码。inode缓冲区代码1、一些数据结构…

java 快死了_如果Java快死了,那么它肯定看起来非常健康

java 快死了Java快要死了的奇怪但流行的断言只能在没有证据的情况下提出,而不是因为它。 在酷孩子闲逛的论坛(Hacker News,Reddit等)中反复出现的偏见与Java语言背道而驰。 人们常常反复感叹 Java冗长而流行。 虽然我接受第一个描…

python函数调用时所提供的参数可以是变量吗_Python函数一章,关于变量参数调用(何时使用*)记录,pytho,章节,可变,的,什么,时候...

关于可变参数调用def bmi(*person):for list_person in person:for item in list_person:…这个,调用时,不需要带*bmi(list1,list2…)def bmi(*person):for item in person:…这个调用时,需要带*bmi(*list1,*list2)注:…

使用这些先进的GC技术提高应用程序性能

应用程序性能是我们的首要考虑因素,垃圾收集优化是取得小而有意义的进步的好地方 自动化垃圾收集(与JIT HotSpot编译器一起)是JVM中最先进,最有价值的组件之一,但是许多开发人员和工程师对垃圾收集(GC&a…

2mysql_2.Mysql常用命令行大全

7.1 一个建库和建表的实例1drop database if exists school; //如果存在SCHOOL则删除create database school; //建立库SCHOOLuse school; //打开库SCHOOLcreate table teacher //建立表TEACHER(id int(3) auto_increment not null primary key,name char(10) not null,address…