一、GET请求
先创建一个js文件
//引入express
const express = require('express');
//创建应用对象
const app = express();
//创建路由规则
//request 是对请求报文的封装
//response 是对响应报文的封装
app.get('/', (request, response)=>{
//设置响应头
//设置允许跨域
response.setHeader('Access-Control-Allow-Origin', '*');
//设置响应体
response.send('Hello express');
});
//监听端口启动服务
app.listen(8000, ()=>{
console.log("服务已经启动,8000端口监听中。");
});
再创建一个html文件
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Ajax</title>
</head>
<style>
#view{
width: 100px;
height:100px;
border:1px solid #60add5;
}
</style>
<body>
<div id="view">
</div>
<button>request</button>
<script>
const btn = document.getElementsByTagName('button')[0];
btn.onclick = function(){
//创建对象
const xhr = new XMLHttpRequest();
//初始化,设置请求方法和url
xhr.open('GET', 'http://127.0.0.1:8000');
//发送
xhr.send();
//实践绑定,处理服务端返回的结果
xhr.onreadystatechange = function(){
//判断服务端返回了所有结果
if(xhr.readyState === 4){
if(xhr.status >= 200 && xhr.status < 300){
//响应行
// console.log(xhr.status); //状态码
// console.log(xhr.statusText); //状态字符串
// console.log(xhr.getAllResponseHeaders()); //所有响应头
// console.log(xhr.response); //响应体
view.innerHTML = xhr.response;
}
}
}
}
</script>
</body>
</html>
二、POST请求
先创建一个js文件
//引入express
const express = require('express');
//创建应用对象
const app = express();
//创建路由规则
//request 是对请求报文的封装
//response 是对响应报文的封装
app.get('/', (request, response)=>{
//设置响应头
//设置允许跨域
response.setHeader('Access-Control-Allow-Origin', '*');
//设置响应体
response.send('Hello express get');
});
app.post('/', (request, response)=>{
//设置响应头
//设置允许跨域
response.setHeader('Access-Control-Allow-Origin', '*');
//设置响应体
response.send('Hello express post');
});
//监听端口启动服务
app.listen(8000, ()=>{
console.log("服务已经启动,8000端口监听中。");
});
再创建一个HTML文件
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Ajax</title>
</head>
<style>
#result{
width: 200px;
height:200px;
border:1px solid #60add5;
}
</style>
<body>
<div id="result"></div>
<script>
result = document.getElementById("result");
result.addEventListener("mouseover", function(){
//创建对象
const xhr = new XMLHttpRequest();
//设置请求方法和url
xhr.open("POST", "http://127.0.0.1:8000");
//发送
xhr.send();
//事件绑定
xhr.onreadystatechange = function(){
if(xhr.readyState === 4){
if(xhr.status >= 200 && xhr.status < 300){
//处理服务端返回的结果
result.innerHTML = xhr.response;
}
}
}
});
</script>
</body>
</html>
最后文件
js文件
//引入express
const express = require('express');
//创建应用对象
const app = express();
//创建路由规则
//request 是对请求报文的封装
//response 是对响应报文的封装
// app.all('/', (request, response)=>{
// //设置响应头
// //设置允许跨域
// response.setHeader('Access-Control-Allow-Origin', '*');
// //设置响应数据
// const data = {
// name : "LaoWang",
// age : "100"
// };
// let str = JSON.stringify(data);
// //设置响应体
// response.send(str);
// });
app.get('/server', (request, response)=>{
//设置响应头
//设置允许跨域
response.setHeader('Access-Control-Allow-Origin', '*');
response.setHeader('Access-Control-Allow-Headers', '*');
response.setHeader('Access-Control-Allow-Method', '*');
//设置响应体
setTimeout(()=>{
response.send('延时响应');
}, 3000);
});
app.post('/server', (request, response)=>{
//设置响应头
//设置允许跨域
response.setHeader('Access-Control-Allow-Origin', '*');
//设置响应体
response.send('Hello express post');
});
//监听端口启动服务
app.listen(8000, ()=>{
console.log("服务已经启动,8000端口监听中。");
});
- 在终端中输入
nodemon Ajax.js
可开启服务
html 文件
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Ajax</title>
</head>
<style>
#result{
width: 200px;
height:200px;
border:1px solid #60add5;
}
</style>
<body>
<div id="result"></div>
<button>点击发送</button>
<button>点击取消</button>
<script>
result = document.getElementById("result");
btn = document.getElementsByTagName('button');
result.addEventListener("click", function(){
//创建对象
const xhr = new XMLHttpRequest();
//设置响应体数据类型
//xhr.responseType = 'json';
//超时设置 2s
xhr.timeout = 2000;
//超时回调
// xhr.ontimeout = function(){
// alert("请求超时,请稍后再试!");
// };
//网络异常回调
xhr.onerror = function(){
alert("网络异常!");
};
//设置请求方法和url
xhr.open("POST", "http://127.0.0.1:8000/server");
//发送
xhr.send();
//事件绑定
xhr.onreadystatechange = function(){
if(xhr.readyState === 4){
if(xhr.status >= 200 && xhr.status < 300){
//处理服务端返回的结果
result.innerHTML = xhr.response;
}
}
}
});
window.onkeydown = function(){
const xhr = new XMLHttpRequest();
//xhr.responseType = "json";
xhr.timeout = 2000;
// xhr.ontimeout = function(){
// alert("请求超时,请稍后再试!");
// };
xhr.onerror = function(){
alert("网络异常!");
};
xhr.open("GET", "http://127.0.0.1:8000/server");
xhr.send();
xhr.onreadystatechange = function(){
if(xhr.readyState === 4){
if(xhr.status >= 200 && xhr.status < 300){
result.innerHTML = xhr.response;
}
}
}
}
let x = null;
let isSending = false;
btn[0].onclick = function(){
if(isSending)
x.abort(); //如果已经有一个请求,就把它取消,再创建一个新的请求
x = new XMLHttpRequest;
isSending = true;
x.open("GET", "http://127.0.0.1:8000/server");
x.send();
x.onreadystatechange = function(){
if(x.readyState === 4){
isSending = false;
if(x.status >= 200 && x.status < 300){
result.innerHTML = x.response;
}
}
}
}
btn[1].onclick = function(){
x.abort();
}
</script>
</body>
</html>