惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

G
Google Developers Blog
宝玉的分享
宝玉的分享
月光博客
月光博客
B
Blog
云风的 BLOG
云风的 BLOG
Google DeepMind News
Google DeepMind News
Engineering at Meta
Engineering at Meta
aimingoo的专栏
aimingoo的专栏
N
Netflix TechBlog - Medium
博客园_首页
GbyAI
GbyAI
人人都是产品经理
人人都是产品经理
A
About on SuperTechFans
Y
Y Combinator Blog
L
LangChain Blog
有赞技术团队
有赞技术团队
D
Docker
爱范儿
爱范儿
博客园 - 司徒正美
H
Hackread – Cybersecurity News, Data Breaches, AI and More
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
酷 壳 – CoolShell
酷 壳 – CoolShell
Microsoft Security Blog
Microsoft Security Blog
D
DataBreaches.Net

碎言

不懂就别瞎掰掰:【程序员的常识】写的什么玩意? AI 辅助编程下的程序设计与代码编写 使用 Next.js 和 Tailwind CSS 构建可编辑和删除的 ToDo 待办事项应用 探索编程新境界:MarsCode 助你一臂之力 使用 Next.js 和 Tailwind CSS 搭建静态图片展示站点并部署到 Vercel AI 辅助编程:免费工具的优缺点及官网一览 GitHub push更新总是失败,写个python脚本解决 把博客从GitHub迁移到到了vercel ComfyUI 和 Flux.1 安装与使用教程 Flux.1 入门必知:硬件、环境、模型 Git项目的子文件夹中的内容无法同步到远程仓库的解决方法 blender流体Fluid使用中没有流体、流体穿模等一些问题的解决方法 博客聚合网站:积薪,竟然关闭了! blender日常使用中的一些技巧 虽然只有我自己在用,但还是更新了碎言博客的源代码, 与其在迷茫中困惑,不如在努力中前进 差点忘了我还有一个博客... 秧歌、博客和AI 终于熬到了新手上路 好久没有更新博客了。。。 老妈大腿骨骨折,最近一直在医院护理 Hello, September! Ubuntu开机自动启动Docker容器运行WordPress Docker 简单快速安装部署WordPress Docker下安装MySQL 加碘盐能防核辐射的话,还怕什么核战争? shields.io 一个简洁、一致、清晰的徽章 Ubuntu下使用root登录ssh的设置 GitHub Actions 构建、部署 Next.js项目 我又用回了"IE"--edge
使用Fetch发送Ajax请求
J.sky · 2023-05-09 · via 碎言

很久以前,在JavaScript中发送请求或者获取资源的时候很多人都是用的是jQuery,直到最近一直使用axios,但有的时候不想使用第三方的请求的库,这个时候你可以试试Fetch。

现代浏览器基本上都支持fetch,包括node18以上的版本,除了IE。

曾经的请求方式jQuery

曾经的回忆,jQuery发送get请求:

$.get( "foo.php", function( response ) {
    console.log( response ); // server response
});

后来的axios的get请求代码:

// 向给定ID的用户发起请求
axios.get('/user?ID=12345')
.then(function (response) {
    // 处理成功情况
    console.log(response);
})
.catch(function (error) {
    // 处理错误情况
    console.log(error);
})
.then(function () {
    // 总是会执行
});

现代JavaScript的请求

在看看Fetch的get请求代码示例:

<img id="dog" />
<script>
    fetch('https://dog.ceo/api/breeds/image/random')
        .then((res) => {
            return res.json()
        }).then((result) => {
        document.getElementById("dog").src = result.message;
    })
        .catch((err) => {
        })
</script>

这个请求会返回一个图片地址,随机显示一只可爱的狗狗图片。

再试试一个post的请求,这里我们使用https://echo.apifox.com/post这个免费的测试接口,这个接口有两个Body参数 (application/json):d和dd.

let myHeaders = new Headers();
myHeaders.append("User-Agent", "Apifox/1.0.0 (https://www.apifox.cn)");
myHeaders.append("Content-Type", "application/json");

let raw = JSON.stringify({
    "d": "hello",
    "dd": "world"
});

let requestOptions = {
    method: 'POST',
    headers: myHeaders,
    body: raw,
    redirect: 'follow'
};

fetch("https://echo.apifox.com/post", requestOptions)
    .then(response => response.json())
    .then((rest)=>{
        let d = JSON.parse(rest.data);
        console.log(d.d+d.dd) })
    .catch(error => console.log('error', error));

在node环境下,运行脚本,会输出:helloworld。

以上就是fetch的简单用法,fetch使用需要注意的是在node环境中需要18+的版本,现代浏览器除了IE基本上都是支持fetch的。

参考:

fetch()

Fetch_API

Apifox Echo