亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > AJAX > 正文

jQuery+koa2實現簡單的Ajax請求的示例

2024-09-01 08:33:58
字體:
來源:轉載
供稿:網友

前言

之前寫Ajax代碼只管前端的實現,感覺這樣導致自己對Ajax的請求的理解不夠深入,所以寫了這個從前端到后端的Ajax實現小demo,分別實現簡單的GETPOST請求,加深下對前后端交互的理解。

技術棧

  1. koa2
  2. jQuer

需求

某些邏輯可以直接在前端處理,這里發給后端處理是為了更好地理解Ajax請求。

POST

通過填寫編號和姓名并發送POST請求來保存人員信息,當信息未填寫或填寫不正確時給出格式錯誤的提醒;當信息填寫正確但編號已存在時給出編號已存在的提醒;當信息填寫正確且編號不存在時顯示保存成功。

GET

通過填寫編號并發送GET請求來查詢人員信息,當編號未填寫或填寫不正確時給出格式錯誤的提醒;當編號填寫正確且編號已存在時返回人員信息;當信息填寫正確但編號不存在時顯示人員不存在的錯誤提醒。

文件列表

  1. dist
    1. index.html
    2. index.js
  2. server.js
  3. router.js

前端實現

html頁面

index.html,簡單的html頁面,通過點擊按鈕發送json格式的Ajax請求:

<!DOCTYPE html><html><head> <meta charset="UTF-8"> <title>Document</title> <script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.js"></script></head><body> <div> <h1>Hello World</h1> <label for="person-number">編號</label> <input type="text" id="person-number"> <label for="person-name">姓名</label> <input type="text" id="person-name"> <button id="save">保存信息</button> <label for="search-number">編號</label> <input type="text" id="search-number"> <button id="search">查詢信息</button> <br> <br> <div id="message"></div> </div> <!-- jQuery實現代碼 --> <script src="./index.js"><script></body></html>

jQuery發送Ajax請求

發送GET請求:

var searchButton = $('#search');var personNumber = $('#person-number').val();searchButton.click(() => { var number = $('#search-number').val(); $.ajax({ type: 'GET', url: `person/?number=${number}` })});

發送POST請求:

var saveButton = $('#save').click(() => { var number = $('#person-number').val(); var name = $('#person-name').val(); $.ajax({ type: 'POST', url: 'person', dataType: 'json', data: {  number: number,  name: name } })});

處理返回的json數據

通過ajaxComplete事件處理返回的數據,這個事件只能綁定到document對象上:

// Ajax完成事件$(document).ajaxComplete(function(event, xhr, settings) { var obj = JSON.parse(xhr.responseText); var data = obj.data; if(obj.success && data['number']){ $('#message').text(`姓名:${data['name']} 編號:${data['number']}`); } else { $('#message').text(data); }});

后端實現

web服務器

通過koa2來實現一個簡單的Web服務器。server.js

const path = require('path');const serve = require('koa-static');const Koa = require('koa');const koaBody = require('koa-body'); // 解析 multipart、urlencoded和json格式的請求體const router = require('./router.js');const app = new Koa();app.use(serve(path.join(__dirname, './dist'))); // 讀取前端靜態頁面app.use(koaBody()); // 通過該中間件解析POST請求的請求體才能拿到數據app.use(router.routes());app.listen(3000);console.log('listening on port 3000');

通過路由處理請求

處理GET請求,并以json字符串的形式返回數據。通過GET請求發送的查詢參數會以對象字面量的形式保存在ctx.query屬性中:

router.get('/person', (ctx, next) => { let number = ctx.query.number; let temp = {}; // 判斷編號是否存在 temp.data = /^[0-9]+$/.test(number) ? (people[number] ? people[number] : '編號不存在' ) : '編號格式錯誤'; temp.success = !!temp.data['number']; ctx.body = JSON.stringify(temp); // 響應請求,發送處理后的信息給客戶端});

處理POST請求,并以json字符串的形式返回數據。POST請求的數據保存在請求的請求體中,需要用koa-body中間件自動解析后才能通過ctx.request.body獲取請求的數據:

router.post('/person', (ctx, next) => { let query = ctx.request.body; let temp = {}; // 編號必須是數字并且大于0,名字必須存在 if (/^[0-9]+$/.test(query.number) && query.name && parseInt(query.number, 10) > 0) { // 判斷編號是否存在 if (!people[query.number]) {  // 保存信息  people[query.number] = {  number: parseInt(query.number, 10),  name: query.name  };  temp.success = true;  temp.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' }, 5: { number: 5, name: 'Mario Ritter' },};router.get('/person', (ctx, next) => { let number = ctx.query.number; let temp = {}; // 要返回給客戶端的對象,通過success屬性判斷存取是否成功。 // 判斷編號是否存在 temp.data = /^[0-9]+$/.test(number) ? (people[number] ? people[number] : '編號不存在' ) : '編號格式錯誤'; temp.success = !!temp.data['number']; ctx.body = JSON.stringify(temp);});router.post('/person', (ctx, next) => { let query = ctx.request.body; let temp = {}; // 編號必須是數字并且大于0,名字必須存在 if (/^[0-9]+$/.test(query.number) && query.name && parseInt(query.number, 10) > 0) { // 判斷編號是否存在 if (!people[query.number]) {  // 保存信息  people[query.number] = {  number: parseInt(query.number, 10),  name: query.name  };  temp.success = true;  temp.data = '保存成功'; } else {  temp.success = false;  temp.data = '編號已存在'; } } else { temp.success = false; temp.data = '信息格式錯誤'; } ctx.body = JSON.stringify(temp);});module.exports = router;

測試

在控制臺輸入node server.js可以看到服務器在3000端口運行了,打開瀏覽器輸入localhost:3000就可以看到一個簡單的前端頁面:

koa2,Ajax請求,koa,post請求,get請求

查詢數據:

koa2,Ajax請求,koa,post請求,get請求

koa2,Ajax請求,koa,post請求,get請求

保存數據:

koa2,Ajax請求,koa,post請求,get請求

再次查詢數據:

koa2,Ajax請求,koa,post請求,get請求

至此,一個完整的Ajax請求demo就完成了。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
中文字幕亚洲欧美一区二区三区| 国内精久久久久久久久久人| 日本人成精品视频在线| 中文字幕成人在线| 最好看的2019的中文字幕视频| 日韩在线视频播放| 色婷婷久久一区二区| 综合久久五月天| 亚洲乱亚洲乱妇无码| 另类专区欧美制服同性| 欧美成人在线免费视频| 国产精品色视频| 国产原创欧美精品| 4k岛国日韩精品**专区| 久久久人成影片一区二区三区观看| 91深夜福利视频| 久久亚洲精品小早川怜子66| 亚洲欧美日韩区| 久久久999精品| 97国产真实伦对白精彩视频8| 久热在线中文字幕色999舞| 亚洲欧美日韩在线一区| 日韩精品在线免费播放| 欧美日韩中文字幕综合视频| 丝袜美腿精品国产二区| 成人淫片在线看| 91精品久久久久久久久中文字幕| 成人精品视频久久久久| 成人激情视频网| 国产一区二区精品丝袜| 亚洲在线免费观看| 黄色精品一区二区| 欧洲永久精品大片ww免费漫画| 久久精品成人欧美大片| 成人在线观看视频网站| 日本久久91av| 亚洲图片在区色| 久久精品视频在线观看| 成人美女av在线直播| 成人免费直播live| 国产精品羞羞答答| 久久久久久久激情视频| 最近2019中文字幕在线高清| 九九精品在线播放| 欧美激情第三页| 伊人伊成久久人综合网站| 国产精品免费观看在线| 色综合久久88色综合天天看泰| 欧美超级免费视 在线| 亚洲最大的av网站| 亚洲a级在线播放观看| 秋霞av国产精品一区| 亚洲精品电影在线| 久久精品国产96久久久香蕉| 日韩欧美aⅴ综合网站发布| 亚洲国产美女久久久久| 欧美激情国产日韩精品一区18| 精品久久久久久亚洲国产300| 美女福利视频一区| 久久久av一区| 色综合久久88| 欧美一区在线直播| 欧美国产日本高清在线| 国产欧美在线观看| 国产亚洲精品久久久| 姬川优奈aav一区二区| 欧美寡妇偷汉性猛交| 日韩在线视频免费观看高清中文| 精品性高朝久久久久久久| 国外成人性视频| 日本高清+成人网在线观看| 日韩成人在线电影网| 亚洲性无码av在线| 欧美丝袜美女中出在线| 亚州欧美日韩中文视频| 欧美午夜丰满在线18影院| 国产午夜精品视频免费不卡69堂| 欧美大片在线看| 国产精品成人国产乱一区| 中文字幕日韩欧美在线| 岛国av一区二区三区| 欧美极品美女视频网站在线观看免费| 国产97在线播放| 久久成人精品视频| 久久精品99国产精品酒店日本| 一区二区三区四区在线观看视频| 欧美亚洲一区在线| 午夜精品久久久久久久久久久久| 亚洲天堂成人在线视频| 久久人人爽国产| 国产精品日韩欧美综合| 日韩成人网免费视频| 日本精品在线视频| 久久精品一区中文字幕| 久久久精品999| 日韩国产精品视频| 国产日韩欧美日韩大片| 日韩一区在线视频| 欧美日韩国产成人高清视频| 亚洲精选一区二区| 欧美激情a在线| 欧美激情国内偷拍| 国内精品小视频在线观看| 2021久久精品国产99国产精品| 欧美限制级电影在线观看| 一区二区三区视频在线| 欧美精品一区二区三区国产精品| 亚洲图片在线综合| 国产精品久久久久影院日本| 欧美日韩在线视频观看| 欧美在线一级视频| 成人精品在线视频| 久久理论片午夜琪琪电影网| 欧洲美女7788成人免费视频| 911国产网站尤物在线观看| 国产精品久久久久久久久久久久| 欧美整片在线观看| 国产精品96久久久久久又黄又硬| 欧美激情在线播放| 色av吧综合网| 日本高清不卡在线| 日本精品免费一区二区三区| 中文欧美在线视频| 亚洲午夜未删减在线观看| 91亚洲精品在线观看| 中文字幕欧美日韩va免费视频| 色老头一区二区三区| 精品调教chinesegay| 亚洲精品第一页| 国产精品免费福利| 亚洲国产天堂久久综合网| 国内精久久久久久久久久人| 久久久久久久久久久久av| 国产精品视频男人的天堂| 国产精品免费视频久久久| 亚洲а∨天堂久久精品9966| 国产精品免费一区二区三区都可以| 亚洲桃花岛网站| 国产精品h片在线播放| 日日噜噜噜夜夜爽亚洲精品| 亚洲aa中文字幕| 亚洲久久久久久久久久久| 国产午夜精品视频| 久久国产精品久久久久久| 久久躁日日躁aaaaxxxx| 欧美日韩xxx| 日韩中文字幕国产| 国产精品久久久久久亚洲调教| 亚洲欧美自拍一区| 麻豆国产精品va在线观看不卡| 亚洲日本欧美日韩高观看| 国产一区二区三区在线免费观看| 国产日韩欧美黄色| 精品国产91乱高清在线观看| 亚洲国产精彩中文乱码av| 久久亚洲春色中文字幕| 久久视频在线观看免费| 欧美性猛交xxxxx免费看| 国产香蕉精品视频一区二区三区| 欧美日韩国产影院| 欧美性视频网站| 懂色av中文一区二区三区天美| 久久精品国产一区| 欧美亚洲第一区|