jQuery+koa 2 간단 한 Ajax 요청 을 위 한 예제
기 존 에 Ajax 코드 를 쓰 는 것 은 전단 의 실현 에 만 관 한 것 이 었 습 니 다.이 로 인해 자신 이 Ajax 의 요구 에 대한 이해 가 깊 지 않 은 것 같 아서 전단 에서 백 엔 드 까지 의 Ajax 는 작은 demo 를 실현 하고 간단 한
GET
과POST
요 구 를 실현 하 며 앞 뒤 의 상호작용 에 대한 이 해 를 강화 하 였 습 니 다.기술 창고
일부 논 리 는 전단 에서 직접 처리 할 수 있 는데 여기 서 백 엔 드 처 리 를 보 내 는 것 은
Ajax
요 구 를 잘 이해 하기 위해 서 이다.POST
번호 와 이름 을 입력 하고 POST 요청 을 보 내 인원 정 보 를 저장 하고 정보 가 작성 되 지 않 거나 올 바 르 지 않 을 때 형식 오류 에 대한 알림 을 줍 니 다.정보 가 정확 하지만 번호 가 존재 할 때 번호 가 존재 하 는 알림 을 줍 니 다.정보 가 정확 하고 번호 가 존재 하지 않 을 때 저장 에 성공 한 것 으로 표 시 됩 니 다.
GET
번 호 를 작성 하고 GET 요청 을 보 내 인원 정 보 를 조회 하고 번호 가 작성 되 지 않 았 거나 올 바 르 지 않 을 때 형식 오류 에 대한 알림 을 줍 니 다.번호 가 정확 하고 번호 가 존재 할 때 인원 정 보 를 되 돌려 줍 니 다.정보 가 정확 하지만 번호 가 존재 하지 않 을 때 인원 이 존재 하지 않 는 오류 알림 을 표시 합 니 다.
파일 목록
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);
}
});
백 엔 드 구현웹 서버
koa2
를 통 해 간단 한 웹 서버 를 실현 합 니 다.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
을 열 면 간단 한 전단 페이지 를 볼 수 있 습 니 다.조회 데이터:
데이터 저장:
데이터 재 조회:
이로써 완전한 Ajax 요청 demo 가 완성 되 었 습 니 다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Construindo um ambiente 노드js com DockerO que me motivu a escrever esse artigo foi a vontade de mostrar como criar um ambiente de desenvolvimento queéutilizado ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.