宝哥软件园

通过jQuery koa2实现简单Ajax请求的示例

编辑:宝哥软件园 来源:互联网 时间:2021-09-01

前言

在编写Ajax代码之前,它只关注前端实现,我觉得自己对Ajax请求的理解还不够深入。于是我编写了这个从前端到后端的Ajax实现演示,分别实现了简单的GET和POST请求,加深了对前端交互的理解。

技术栈

Koa2 jQuer要求

有些逻辑可以直接在前端处理,为了更好地理解Ajax请求,会发送到后端。

邮政

通过填写号码和姓名并发送POST请求的方式保存人员信息,当信息未填写或填写不正确时给出格式错误的提醒;当信息填写正确但号码已经存在时,提醒该号码已经存在;当信息填写正确,号码不存在时,表示保存成功。

得到

通过填写号码和发送GET请求查询人员信息,当号码未填写或填写不正确时给出格式错误的提醒;当号码填写正确且号码已经存在时,返回人员信息;当信息填写正确但号码不存在时,会显示错误提示,提示此人不存在。

列出的文件

dist index.html索引的前端实现

Html页面

Index.html,一个简单的html页面,通过点击按钮:发送一个json格式的Ajax请求

!DOCTYPE htmlhtmlhead元字符集=' UTF-8 ' title document/title script src=' http :https://cdn . bootcss.com/jquery/3 . 3 . 1/jquery . js '/script/Head body div h1 hello world/h1标签为=' person-number' number/label输入类型=' text' id=' person-number '标签为=' person-name' name/Label输入类型=' text' id=' person-name '按钮id=' save' save- jQuery实现代码-脚本src=' http:/index . js ' script/body/html jquery发送Ajax请求

发送GET请求:

var search button=$(' # search ');var person number=$(' # person-number ')。val();search button . click(()={ var number=$(' # search-number ')。val();$.ajax({ type: 'GET ',url: `person/?number=$ { number } `})});发送开机自检请求:

var saveButton=$('#save ')。单击(()={ var number=$('#person-number ')。val();var name=$('#person-name ')。val();$.ajax({ type: 'POST ',url: 'person ',dataType: 'json ',data: { number: number,name : name } })});处理返回的json数据

通过ajaxComplete事件处理返回的数据,该事件只能绑定到文档对象:

//Ajax完成事件$(文档)。Ajax完成(函数(事件、xhr、设置){varobj=JSON。解析(xhr。response text);var数据=obj.data如果。successdata[' number ']){ $(' # message ')。text(` name:$ { data[' name ']} number:$ { data[' number ']} `);} else { $('#message ')。文本(数据);}});后端实现

网络服务器

通过koa2实现一个简单的Web服务器。server.js:

const path=require(' path ');const serve=require(' KOA-static ');const Koa=require(' Koa ');const Koabody=require(' KOA-body ');//解析请求体const router=require('。/router . js’)的多部分、urlencoded和json格式;const app=new Koa();app . use(serve(path . join(_ _ dirname,')。/dist’));//读取前端静态页面app . use(koaBody());//数据app.use(router.routes())只能通过中间件分析POST请求的请求体才能得到;app . listen(3000);console.log('监听端口3000 ');通过路由处理请求

处理GET请求并将数据作为json字符串返回。通过GET请求发送的查询参数以对象文字的形式保存在ctx.query属性中:

router.get('/person ',(ctx,next)={ let number=CTX。查询。数量;让temp={ };//判断编号是否存在临时数据=/^[0-9] $/。测试(数字)?(人[数]?人民[数字] : '编号不存在' ) : '编号格式错误;temp.success=!在…之时数据[' number '];CTX。body=JSON。stringify(temp);//响应请求,发送处理后的信息给客户端});处理邮政请求,并以数据字符串的形式返回数据开机自检。请求的数据保存在请求的请求体中,需要用寇阿相思树体中间件自动解析后才能通过ctx.request.body获取请求的数据:

router.post('/person ',(ctx,next)={让query=CTX。请求。身体;让temp={ };//编号必须是数字并且大于0,名字必须存在if(/^[0-9)$/。测试(查询。号)查询。name ParSeint(查询。数字,10) 0) { //判断编号是否存在if(!people[query.number]) { //保存信息人[查询。number]={ number : ParSeint(查询。号,10),名称:查询。名称};temp.success=truetemp.data='保存成功;} else { temp . success=false temp . data='编号已存在;} } else { temp . success=false temp . data='信息格式错误;} CTX。body=JSON。stringify(temp);});完整的router.js:

const Router=require(' KOA-Router ');const Router=new Router();//初始的人员信息对象,信息从这里储存和读取const people={ 1: { number : 1,name: 'Dan Friedell' },2: { number: 2,name: ' Anna Matteo ' },3: { number: 3,name: ' Susan Shand ' },4: { number: 4,name: ' Bryan Lynn ' },533: { router number查询。数量;让temp={ };//要返回给客户端的对象,通过成功属性判断存取是否成功。 //判断编号是否存在临时数据=/^[0-9] $/。测试(数字)?(人[数]?人民[数字] : '编号不存在' ) : '编号格式错误;temp.success=!在…之时数据[' number '];CTX。body=JSON。stringify(temp);});router.post('/person ',(ctx,next)={让query=CTX。请求。身体;让temp={ };//编号必须是数字并且大于0,名字必须存在if(/^[0-9)$/。测试(查询。号)查询。name ParSeint(查询。数字,10) 0) { //判断编号是否存在if(!people[query.number]) { //保存信息人[查询。number]={ number : ParSeint(查询。号,10),名称:查询。名称};temp.success=truetemp.data='保存成功;} else { temp . success=false temp . data='编号已存在;} } else { temp . success=false temp . data='信息格式错误;} CTX。body=JSON。stringify(temp);});module.exports=路由器;测试

在控制台输入node server.js可以看到服务器在3000端口运行了,打开浏览器输入localhost:3000就可以看到一个简单的前端页面:

查询数据:

保存数据:

再次查询数据:

至此,一个完整的埃阿斯请求演示就完成了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

更多资讯
游戏推荐
更多+