【JavaScript】eg:同源、未使用ajax实现页面的数据通过Node后台提交到数据库

创建Node项目
并下载数据库依赖 npm install mysql2

  • 目录结构:
    在这里插入图片描述

  • dbconfig.js
    数据库配置文件


//导入mysql模块
const mysql = require('mysql2');

//创建数据库连接对象
const connection = mysql.createConnection({
    host:'localhost',
    port:3306,
    user:'root',
    password:'*****',
    database:'deyun'
})

//让数据库的连接对象对外可见
module.exports = connection;
  • httpserver.js

//导入http模块:用户创建http服务器
const http = require('http');

//导入querystring模块:用来解析客户端提交的数据
const queryString = require('querystring');

//导入数据库的配置模块:用于数据库的操作
const connection = require('../db/dbconfig');

//创建http服务器:对应的请求地址是:http://localhost:3000/index
let server = http.createServer((req,res) => {

    //获取客户端请求的地址
    let clientUrl = req.url;
    console.log(clientUrl);

    if (clientUrl === '/index'){
        let body = '';//用来保存客户端提交的请求数据

        //给请求对象req绑定'data'事件:用来获取客户端的请求数据
        req.on('data',chunk => {
            body += chunk;
        });

        //给请求对象req绑定'end'事件
        req.on('end',() => {
            //将body中的数据转换为键值对的形式
            let params = queryString.parse(body);

            //设置服务器端的响应头信息
            res.writeHead(200, {'Content-Type': 'text/plain;charset=utf-8'});

            //拼接响应字符串
            let res_str = '姓名:'+params.emp_name+"\n"+
                          '性别:'+params.emp_gender+"\n"+
                          '生日:'+params.emp_birthday+"\n"+
                          '电话:'+params.emp_phone+'\n'+
                          '地址:'+params.emp_address;

            console.log(res_str);

            //将响应字符串发送给客户端  先把信息写入数据库,再响应给客户端
            save(params);
            res.write(res_str);

            //关闭连接
            res.end();
        })
    }
}).listen(3000);//绑定端口号


//创建将数据保存到数据库的方法
function save(params){
    connection.query('insert into employee set ?',{
        name:params.emp_name,
        gender:params.emp_gender,
        birthday:params.emp_birthday,
        phone:params.emp_phone,
        address:params.emp_address
    },(err,result) => {
        if(err){
            console.log(err);
            return;
        }
        console.log('插入数据成功');
        connection.end();//断开数据库的连接
    })
}
  • client.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <form action="http://localhost:3000/index" method="post">
        姓名:<input type="text" name="emp_name"><br><br>
        性别:<input type="text" name="emp_gender"></input><br><br>
        生日:<input type="date" name="emp_birthday"><br><br>
        电话:<input type="text" name="emp_phone"><br><br>
        地址:<input type="text" name="emp_address"><br><br>
        <input type="submit" value="提交">
    </form>
</body>
</html>

实现效果:
在这里插入图片描述

未使用ajax实现的弊端:

  • 点击提交后页面会进行跳转 跳转到服务器发给客户端的响应
  • 全局刷新

南栀的博客-Ajax、使用Ajax实现此例子

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南栀~zmt

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值