<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
#response{
width: 200px;
height: 200px;
border: 1px solid red;
}
</style>
</head>
<body>
<button id="btn">点我提交</button>
<div id="response"></div>
<button id="btn2">点我提交</button>
<button id="btn3">点我取消请求</button>
</body>
</html>
<script>
btn.onclick=function(){
// 1.创建对象
const xhr=new XMLHttpRequest();
const test=document.getElementById("response");
// 2.初始化请求方法和url
xhr.open('GET','http://127.0.0.1:8000/delay');
// 3.发送
xhr.send();
// 超时2s取消请求
xhr.timeout=2000
// 同时调用这个函数
xhr.ontimeout=function(){
alert("网络异常,请稍后重试");
}
// 当断网时调用这个函数
xhr.onerror =function(){
alert("你的网络有问题!!!");
}
xhr.onreadystatechange=function()
{ //判断 (服务端是否返回了所有的结果)
if(xhr.readyState===4)
{
// 成功访问该页面(状态码是200-300)
if(xhr.status>=200 &&xhr.status<300)
{
test.innerHTML=xhr.responseText;
}
}
}
}
xhr=null;
btn2.onclick=function(){
xhr=new XMLHttpRequest();
xhr.open('GET','http://127.0.0.1:8000/delay');
xhr.send();
}
btn3.onclick=function(){
xhr.abort();
}
</script>
// 引入express
const express =require('express');
// 2.创建应用对象
const app =express();
// 3.创建路由规划
// request 是对请求报文的封装
// response是对响应报文的封装
// 要在后面输入server才可访问http://localhost:8000/server
app.get('/server',(request,response)=>{
response.setHeader('Access-Control-Allow-Origin','*');
response.setHeader('Access-Control-Allow-headers','*');
// 设置响应
response.send('hello express');
});
app.post('/server',(request,response)=>{
response.setHeader('Access-Control-Allow-Origin','*');
// 接受所有请求的头信息
response.setHeader('Access-Control-Allow-headers','*');
// 设置响应
response.send('hello express');
});
app.all('/server',(request,response)=>{
response.setHeader('Access-Control-Allow-Origin','*');
// 接受所有请求的头信息
response.setHeader('Access-Control-Allow-headers','*');
// 设置响应
response.send('hello express');
});
app.all('/json-server',(request,response)=>{
response.setHeader('Access-Control-Allow-Origin','*');
// 接受所有请求的头信息
response.setHeader('Access-Control-Allow-headers','*');
const data ={
name:'hxyt'
};
const data2=[1,12,3];
let str2=JSON.stringify(data2);
let str =JSON.stringify(data);
// 设置响应
response.send(str);
});
app.all('/delay',(request,response)=>{
response.setHeader('Access-Control-Allow-Origin','*');
// 接受所有请求的头信息
response.setHeader('Access-Control-Allow-headers','*');
const data ={
name:'hxyt'
};
let str =JSON.stringify(data);
// 设置响应,等3s再返回
setTimeout(()=>{
response.send("延时响应");
},30000)
});
app.listen(8000,()=>{
console.log("服务已经启动,8000端口监听中");
})
版本号是21ac8bb
https://gitee.com/rjgc1192/ajax/tree/master/
取消成功