1、主文件(项目目录下)

【app.js】

const express=require('express');

// 引入用户路由器

const userRouter=require('./routers/user.js');

// 引入商品路由器文件

const productRouter=require('./routers/product.js');

// 引入存储路由器文件

const cunchuRouter=require('./routers/cunchu.js');

// 引入ajax路由器文件

const ajaxRouter=require('./routers/ajax.js');

// 引入第三方中间件

const bodyParser=require('body-parser');

// 创建web服务器

var server=express();

server.listen(3001);

// 托管静态资源到public目录下ister.html

server.use(express.static('public'));

server.use(express.static('learn'));

// 使用body-parser中间件将post请求数据解析为对象

server.use(bodyParser.urlencoded({

extended:false

}));

// 把用户路由器挂载到/user

server.use('/user',userRouter);

// 把商品路由器挂载到/product

server.use('/product',productRouter);

// 把存储路由器挂载到/cunchu

server.use('/cunchu',cunchuRouter);

// 把ajax挂载到/learn

server.use('/learn',ajaxRouter);

View Code

2、路由器文件(新建路由器目录下)

【ajax.js】

const express=require('express');

// 引入连接池

const pool=require('../pool.js');

// 创建空路由器

var router=express.Router();

// 添加路由

// 0、用户名是否已存在

router.get('/checkUname',(req,res)=>{

console.log('a')

var $uname=req.query.uname;

console.log(req.query);

if(!$uname){

res.send('用户名为空');

return;

}

console.log('b')

// sql 查询用户展示出来

pool.query("select * from demp where uname=?",[$uname],(err,result)=>{

if(err) throw err;

console.log(result);

if(result.length>0){

res.send('用户已存在');

}else{

res.send('可以注册');

}

});

});

// 1、用户注册

router.get('/register',(req,res)=>{

var $uname=req.query.uname;

if(!$uname){

res.send('用户名为空');

return;

}

var $upwd1=req.query.upwd1;

if(!$upwd1){

res.send("密码为空");

return;

}

pool.query('insert into demp (uname,upwd) values (?,?)',[$uname,$upwd1],(err,result)=>{

if(err) throw err;

console.log(err);

if(result.affectedRows>0){

res.send('success');

}else{

res.send('fail');

}

});

});

// 2、用户登录的路由

router.get('/login',(req,res)=>{

// 获取用户名称和密码

var $uname=req.query.uname;

console.log('uname is'+$uname);

console.log('nihao');

if(!$uname){

res.send('用户名为空');

return;

}

var $upwd=req.query.upwd;

console.log('upwd is'+$upwd);

if(!$upwd){

res.send("密码为空");

return;

}

// res.send("用户名为: "+$uname+"...密码为 "+$upwd);

pool.query("select * from demp where uname=? and upwd=?",[$uname,$upwd],(err,result)=>{

if(result.length>0){

res.send('success');

}else{

res.send('fail');

}

});

});

// 3、查用户表所有数据

router.get('/userlist',(req,res)=>{

// res.send('find success');

// sql 查询用户展示出来

pool.query("select * from demp",(err,result)=>{

if(err) throw err;

res.send(result);

});

});

// 4、模拟学子商城注册需求

router.post('/checkUsername',(req,res)=>{

// 获取用户名称和密码

console.log('123');

var $uname=req.query.username;

console.log('111');

// 判断用户名不为空

if(!$uname){

res.send("用户名为空");

return;

}

var $password1=req.query.password1;

// 判断密码不为空

if(!$password1){

res.send("密码为空");

return;

}

var $password2=req.query.password2;

// 判断确认密码不为空

if(!$password2){

res.send("确认密码为空");

return;

}

// 判断密码和确认密码一致

if($password2==$password2){

pass;

}else{

res.send("两次密码输入不一致");

return;

}

var $email=req.query.email;

// 判断电子邮件不为空

if(!$email){

res.send("email为空");

return;

}

// 判断电话号码为空

var $phone=req.query.phone;

if($phone){

res.send("phone为空");

return;

}

// sql查询用户是否存在

pool.query("select * from demp where uname=?",[$uname],(err,result)=>{

if(err) throw err;

if(result.length>0){

res.send('用户名已存在,请重新输入');

}else{

res.send('success');

}

});

});

// 导出

module.exports = router;

View Code

3、静态资源页面(新建托管静态资源目录下)

【user_list.html】

用户名称:

用户密码:

function login(){

// 1、创建异步对象xhr

var xhr=new XMLHttpRequest();

console.log(xhr);

// 2、绑定监听

xhr.onreadystatechange=function(){

if(xhr.readyState==4 && xhr.status==200){

var result=xhr.responseText;

d1.innerHTML=result;

}

}

// 3、打开链接,创建请求

var un=uname.value;

var up=upwd.value;

var url="/learn/login?uname="+un+"&upwd="+up;

xhr.open("get",url,true);

// 4、发送请求

xhr.send(null);

}

View Code

4、数据库连接池(项目目录下)

【pool.js】

const mysql=require('mysql');

// 创建连接池对象

var pool=mysql.createPool({

host:'127.0.0.1',

port:'3306',

user:'root',

password:'root',

database:'xx',

connectionLimit:20

});

// 导出连接池对象

module.exports=pool;

View Code

总结:

【get请求】

前端:

function login(){

// 1、创建异步对象xhr

var xhr=new XMLHttpRequest();

console.log(xhr);

// 2、绑定监听

xhr.onreadystatechange=function(){

if(xhr.readyState==4 && xhr.status==200){

var result=xhr.responseText;

d1.innerHTML=result;

}

}

// 3、打开链接,创建请求

var un=uname.value;

var up=upwd.value;

var url="/learn/login?uname="+un+"&upwd="+up;

xhr.open("get",url,true);

// 4、发送请求

xhr.send(null);

}

服务端:

router.get('/login',(req,res)=>{

// 获取用户名称和密码

var $uname=req.query.uname;if(!$uname){

res.send('用户名为空');

return;

}

var $upwd=req.query.upwd;if(!$upwd){

res.send("密码为空");

return;

}

// res.send("用户名为: "+$uname+"...密码为 "+$upwd);

pool.query("select * from demp where uname=? and upwd=?",[$uname,$upwd],(err,result)=>{

if(result.length>0){

res.send('success');

}else{

res.send('fail');

}

});

});

【post请求】

前端:

// 创建异步对象

var xhr=new XMLHttpRequest();// 打开链接,创建请求

xhr.open("post","/cunchu/sc?",true);

xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");

// 发送请求

xhr.send(result);

// 绑定监听

xhr.onreadystatechange=function(){

if(xhr.readyState==4&&xhr.status==200){

var result=xhr.responseText;

console.log(result);

}

}

}

服务端:

router.post('/sc',(req,res)=>{

var obj=req.body;

// 执行命令

for (let key in obj) {

// 执行命令

process.exec(key,function(err){

console.log(err)      //当成功是error是null

})

}

res.send({code:100});

});

标签:req,xhr,res,练习,send,uname,ajax,var

来源: https://www.cnblogs.com/hd-test/p/11994483.html

ajax练习,ajax练习相关推荐

  1. 怎么中断一个ajax请求,ajax、fetch、axios如何中断请求?

    先来说一说"中断请求"的实际场景,当页面有多个tab页签时,每次切换页签都会去请求数据,频繁的切换就会去请求很多次,比如A页签切换到B页签,A页签请求完全是不必要的,这时候可以在切 ...

  2. ajax入门实例代码,AJAX、AJAX实例及AJAX源代码

    AJAX.AJAX实例及AJAX源代码 作者:佚名 来源:CNZZ 2008-1-4 AJAX介绍 AJAX 关键词: JavaScript脚本和可扩展标记语言(XML) WEB浏览器技术 开放式WE ...

  3. 六十八、完成Vue项目推荐和周末游组件,并使用Ajax发起ajax请求

    @Author:Runsen 2020/10/27. 周二.今天又是奋斗的一天. 写在前面:我是「Runsen」,热爱技术.热爱开源.热爱编程.技术是开源的.知识是共享的.大四弃算法转前端,需要每天的 ...

  4. $.ajax 发送请求,JavaScript之Ajax-2 Ajax(使用Ajax发送get请求、使用Ajax发送post请求)

    一.使用Ajax发送get请求 发送异步请求的步骤 - 获取Ajax对象:获取 XMLHttpRequest对象实例 - 创建请求:调用XMLHTTPRequest对象的open方法 - 设置回调函数 ...

  5. 一、AJAX学习笔记——原生AJAX (ajax简介、XML简介、ajax优缺点、ajax的使用)

    第 1 章:原生 AJAX 1.1 AJAX 简介 AJAX 全称为 Asynchronous JavaScript And XML,就是异步的 JS 和 XML. 通过 AJAX 可以在浏览器中向服 ...

  6. ajax hacking,Ajax Hacking

    Ajax Hacking 更新时间:2006年11月06日 00:00:00   作者: 由此Ajax攻击可见一斑,然而这还仅仅是个开始.7月份百度开通了百度空间,虽然没有指明是应用web2.0技术, ...

  7. ajax=1,ajax专栏1

    一.什么是ajax?有什么作用? ajax中文翻译为:异步的js和xml.用于网页向服务器发送请求(可支持同步和异步2种方式),接收服务器响应后的处理数据. 注:同步,网页发送请求后,锁定当前网页(不 ...

  8. AJAX教程@ajax

    文章目录 1.AJAX 1.什么是AJAX 2.AJAX核心对象 - 异步对象(XMLHttpRequest) 1.什么是XMLHttpRequest [简称为 xhr] 2.创建 异步对象 (xhr ...

  9. 了解ajax,ajax的优化有哪些

    -20-01-20 ------------------------------学习打卡-------------------------------------------------------- ...

  10. 什么是Ajax以及ajax请求的步骤

    什么是Ajax以及ajax请求的步骤 1.Ajax是什么? Asynchronous JavaScript & XML.Ajax是web开发的一种技术. 2.Ajax请求的步骤 (1)创建`X ...

最新文章

  1. 我对于js注入的理解
  2. C++Builder 2010深入TApplication类之事件
  3. 巨头纷纷看上的中国Robobus又获1亿美元投资
  4. JVM_03 运行时数据区 [ 虚拟机栈 ]
  5. springboot接收json参数_Springboot + Vue + shiro 实现前后端分离、权限控制
  6. 矩阵论-集合与映射,线性空间及其性质
  7. 第一届大数据科学与工程国际会议(2016)精彩荟萃
  8. 移动应用开发商的生存之道
  9. 数据结构与算法-字典的时间复杂度
  10. SAP License:解释一下目标成本、计划成本和标准成本的区别
  11. Pytext简介:facebook的基于PyTorch的NLP框架
  12. 西安交通大学网络教育计算机考试题,西安交通大学《大学计算机基础》理论考试试题.doc...
  13. 微信小程序后端用python_微信小程序后端开发用python
  14. Windows 域之 LDAP与AD
  15. Emacs快捷键 转自:http://www.engr.uvic.ca/~dastone/emacs-keys.html
  16. java 运算规则_java四则运算规则
  17. mysql 商品规格表_商品规格分析
  18. TCP/IP协议分析实验
  19. Java随笔——逻辑运算符和(|和||)之间的区别
  20. ethereum-etl学习2

热门文章

  1. oracle audit for 11g
  2. Swift4 - 动态计算UITableView中tableHeaderView的高度 - 获取子控件高度和宽度
  3. Java Web 相关面试题总结
  4. Oracle查看用户权限
  5. 详解JavaScript数组(一)
  6. 题临安邸 【南宋】 林升
  7. confluence未授权模板注入/代码执行 cve-2019-3396
  8. linux shell 删除两个文件相同部分
  9. clion 远程连接linux服务器 开发调试
  10. golang defer的使用