我们封装的工具函数只需要配置三个形参就可以完全实现功能,第一个参数url请求网址,第二个参数以post还是get方式请求,第三个是我们的业务函数(回调函数),业务函数运行完将数据传入回调函数运行。
封装代码:
function tool(url,method,callback){
var xhr=new XMLHttpRequest()||new ActiveXObject("Microsoft.XMLHTTP")
xhr.open(method,url)
xhr.send()
//监听
xhr.onreadystatechange=function(){
if(this.readyState==4&&this.status==200){
callback(xhr.responseText)
}
}
}
写一个项目测试一下:
这次我们手巧创建一下服务器回顾一下基础,
创建服务器并设置AJAX请求得接口数据:(这里记得下载第三方模块mime)
var http=require("http")
var fs=require("fs")
var mime=require("mime")
var app=http.createServer((req,res)=>{
// console.log(__dirname+req.url);
fs.readFile(__dirname+req.url,(err,data)=>{
if(!err){
res.setHeader("content-Type",mime.getType(req.url))
res.end(data)
}else if(req.url=="/ajax"){
res.setHeader("content-Type",mime.getType(req.url))
res.end('{"name":"zs","age":45}')
}else{
res.end("404")
}
})
})
app.listen(8081)
创建前端页面,导入我们提前封装好的AJAX。
<!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>
</head>
<body>
<button onclick="fn()">点击获取</button>
<script type="module">
import tool from "./fezhuangAJAX.js"
var btn=document.querySelector("button")
btn.onclick=function(){
tool("GET","/ajax",function(str){
var obj=JSON.parse(str)
console.log(obj);
})
}
</script>
<!-- <script src="./fezhuangAJAX.js"></script> -->
</body>
</html>
运行一下index.html页面获取数据。
再这里提一下,jquery的函数库也为我们封装了原生的AJAX,我们直接在html文档中引入资源库即可直接使用,用法:$.get(url,callback),用我们封装的相似,但是他还有其他很多方法大家可以自行了解,因为现在jquery已经逐渐被弃用了。