<!DOCTYPE html><html lang="zh"><head> <meta charset="UTF-8"> <title>TestAjax</title> <style> #result{ width: 200px; height: 100px; border: solid 1px #2a5caa; } </style></head><body> <button>发送请求</button> <div id="result"></div> <script> const btn = document.getElementsByTagName('button')[0]; const result = document.querySelector('#result'); btn.addEventListener('click',function (){ const xhr = new XMLHttpRequest(); // 请求取消 xhr.timeout = 2000; // 超时回调 xhr.ontimeout = function (){ alert("请求超时,请稍后重试") } // 网络异常回调 xhr.onerror = function (){ alert("网络异常,请稍后重试") } xhr.open('GET','http://localhost:8000/delayed'); xhr.send(); xhr.onreadystatechange = function (){ if (xhr.readyState === 4){ if (xhr.status >= 200 && xhr.status < 300){ result.innerHTML = xhr.response; } } } }); </script></body></html>
const express = require('express')const app = express()app.all('/delayed', (request,response) =>{ response.setHeader('Access-Control-Allow-Origin','*') // 设置允许跨域 response.setHeader('Access-Control-Allow-Headers','*') // 设置所有请求头都可以允许书写 // 延时响应 setTimeout(()=>{ response.send("延时响应"); },3000);});app.listen(8000,()=>{ console.log("服务已启动");});