这个fetch函数是属于全局对象的,可以直接去调用。
首先我们先在服务端修改一段代码给fetch请求
//省略部分内容
...
//fetch服务
app.all('/fetch-server',(request,response)=>{
//设置响应头 设置允许跨域(第一次接触Ajax,不需要完全理解代码)
response.setHeader('Access-Control-Allow-Origin','*');
//允许接收所有类型的响应头
response.setHeader('Access-Control-Allow-Headers','*');
const data = {
"name": "yuque"
};
let str = JSON.stringify(data);
//设置响应体
response.send(str);
})
fetch函数的参数如图
下面在前端代码中演示fetch函数的使用
<!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>fetch发送ajax请求</button>
<script>
const btn = document.querySelector('button');
btn.onclick = function(){
//url中需要参数可以直接添加
fetch("http://127.0.0.1:8000/fetch-server??id=123&vip=10",{
//请求方法
method: "POST",
//请求头
headers:{
name:"abc"
},
//请求体
body: "username=1313&password=sdadsads"
}).then(response => {
console.log(response);
})
}
</script>
</body>
</html>
这样就可以在控制台看到响应的结果。
但是如果我们想获取响应体就不能直接获取,需要使用text()方法,如下:
btn.onclick = function(){
fetch("http://127.0.0.1:8000/fetch-server?id=123&vip=10",{
//请求方法
method: "POST",
//请求头
headers:{
name:"abc"
},
//请求体
body: "username=1313&password=sdadsads"
}).then(response => {
//这里返回text()方法
return response.text();
}).then(response => {
//再次调用then,这时response中就是响应体结果了
console.log(response);
})
}
这时来到浏览器中,可以看到确实输入了响应体结果。
如果返回的是JSON对象,我们可以使用
return response.json();
方法,这样就会自动转换为js对象了。