ajax相关

news/2025/2/7 17:04:15/文章来源:https://www.cnblogs.com/xhaw/p/18702902

一个完整的请求过程
使用JSON Server
首先安装 JSON Server:
npm install -g json-server
创建 db.json 文件并启动服务器:
json-server --watch db.json
JSON Server 会:
读取 db.json 文件
创建一个 HTTP 服务器(默认在 3000 端口)
为文件中的每个顶级属性(users, posts, comments)自动创建对应的 RESTful 路由
// JSON Server 会自动创建以下路由:
GET /users // 获取所有用户
GET /users/1 // 获取指定 ID 的用户
POST /users // 创建新用户
PUT /users/1 // 更新指定用户
DELETE /users/1 // 删除指定用户

GET /posts // 获取所有文章
GET /comments // 获取所有评论
{
"users": [
{
"name": "张三",
"age": 26,
"id": "1"
},
{
"id": "c1da",
"name": "王五",
"age": 28
},
{
"id": "1740",
"name": "111",
"age": "3"
},
{
"id": "9c99",
"name": "124",
"age": "12"
},
{
"id": "7d44",
"name": "王五",
"age": 28
}
],
"posts": [
{
"id": "1",
"title": "第一篇文章",
"author": "张三",
"userId": 1
},
{
"id": "2",
"title": "第二篇文章",
"author": "李四",
"userId": 2
}
],
"comments": [
{
"id": "1",
"body": "很棒的文章!",
"postId": 1
},
{
"id": "2",
"body": "学习了!",
"postId": 1
}
]
}

demo.js
// 2. 前端代码
// 基础配置
const API_BASE_URL = "http://localhost:3000";

// 封装请求方法
const request = {
// GET 请求
get: (url) => {
return fetch(${API_BASE_URL}${url})
.then((response) => response.json())
.catch((error) => console.error("Error:", error));
},

// POST 请求
post: (url, data) => {
return fetch(${API_BASE_URL}${url}, {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify(data),
})
.then((response) => response.json())
.catch((error) => console.error("Error:", error));
},

// PUT 请求
put: (url, data) => {
return fetch(${API_BASE_URL}${url}, {
method: "PUT",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify(data),
})
.then((response) => response.json())
.catch((error) => console.error("Error:", error));
},

// DELETE 请求
delete: (url) => {
return fetch(${API_BASE_URL}${url}, {
method: "DELETE",
})
.then((response) => response.json())
.catch((error) => console.error("Error:", error));
},
};

// 使用示例
async function demo() {
try {
// 1. 获取所有用户
console.log("获取所有用户:");
const users = await request.get("/users");
console.log(users);

// 2. 获取特定用户
console.log("获取 ID 为 1 的用户:");
const user = await request.get("/users/1");
console.log(user);// 3. 创建新用户
console.log("创建新用户:");
const newUser = await request.post("/users", {name: "王五",age: 28,
});
console.log(newUser);// 4. 更新用户
console.log("更新用户信息:");
const updatedUser = await request.put("/users/1", {name: "张三",age: 26,
});
console.log(updatedUser);// 5. 删除用户
console.log("删除用户:");
await request.delete("/users/2");
console.log("用户已删除");// 6. 获取用户的文章
console.log("获取用户的文章:");
const userPosts = await request.get("/posts?userId=1");
console.log(userPosts);// 7. 获取文章的评论
console.log("获取文章的评论:");
const postComments = await request.get("/comments?postId=1");
console.log(postComments);

} catch (error) {
console.error("操作失败:", error);
}
}

// 执行示例
demo();

// 添加 DOM 操作
document.addEventListener("DOMContentLoaded", () => {
// 获取并显示用户列表
function loadUsers() {
request.get("/users").then((users) => {
const userList = document.getElementById("users");
userList.innerHTML = users
.map(
(user) => <li> ${user.name} (${user.age}岁) <button onclick="deleteUser(${user.id})">删除</button> </li>
)
.join("");
});
}

// 获取并显示文章列表
function loadPosts() {
request.get("/posts").then((posts) => {
const postList = document.getElementById("posts");
postList.innerHTML = posts
.map(
(post) => <li> <h3>${post.title}</h3> <p>作者:${post.author}</p> </li>
)
.join("");
});
}

// 添加用户
document.getElementById("userForm").addEventListener("submit", (e) => {
e.preventDefault();
const name = document.getElementById("name").value;
const age = document.getElementById("age").value;

request.post("/users", { name, age }).then(() => {loadUsers();document.getElementById("userForm").reset();
});

});

// 删除用户
window.deleteUser = (id) => {
request.delete(/users/${id}).then(() => loadUsers());
};

// 初始加载用户列表和文章列表
loadUsers();
loadPosts();
});
index.html

JSON Server Demo

用户管理系统

<div id="userList"><h2>用户列表</h2><ul id="users"></ul>
</div><div id="postList"><h2>文章列表</h2><ul id="posts"></ul>
</div><div id="addUser"><h2>添加用户</h2><form id="userForm"><input type="text" id="name" placeholder="姓名" /><input type="number" id="age" placeholder="年龄" /><button type="submit">添加</button></form>
</div><script src="demo.js"></script>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/880120.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Grafana 的性能告警-高效获取性能测试指标问题

做性能测试的时候大部分公司都会使用 prometheus+grafana 监控平台对性能测试结果进行监控。这个grafana的监控大屏可以很有效的查看到所有历史数据以及趋势变化。但是如果做的是长时间的稳定性测试,要一直盯着屏幕监控也不太现实,所以我们希望这个监控的指标一旦有异常能给我…

痞子衡嵌入式:恩智浦i.MX RT1180系列MCU启动那些事(2)- Boot配置(BOOT Pin/eFUSE)

大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是恩智浦i.MX RT118x系列MCU的Boot配置。痞子衡旧文 《RT四位数Boot简介》 里为大家介绍了 Boot 基本原理以及 i.MXRT1xxx Boot 方式,此外也有文章 《RT1xxx Boot配置》 介绍了 i.MXRT10xx/RT1170 Boot 的行为…

三分钟让Dify接入Ollama部署的本地大模型!

1 运行 Ollama 与 qwen2:0.5b 聊天 ollama run qwen2:0.5b启动成功后,ollama 在本地 11434 端口启动了一个 API 服务,可通过 http://localhost:11434 访问。 2 Dify 中接入 Ollama 2.1 添加模型 在 设置 > 模型供应商 > Ollama 添加模型:填写 LLM 信息:模型名称:以 …

Ubuntu 一次成功安装 k8s集群

Ubuntu系统设置静态固定IP保姆级教程 修改主机名 sudo hostnamectl set-hostname k8s-master关闭防火墙 systemctl status ufw.service systemctl stop ufw.service systemctl disable ufw.serviceapt-get update安装docker apt install -y docker.iosudo mkdir -p /etc/docker…

高标准农田智慧管理系统

随着科技的飞速发展,智慧农业已成为推动农业现代化的重要力量。高标准农田智慧管理系统作为智慧农业的核心组成部分,正逐步改变着传统农业的生产方式。本文将深入探讨高标准农田智慧管理系统的建设内容,以期为我国农业的可持续发展提供新的思路和方向。一、高标准农田智慧管…

老年人评估系统web端

项目结构项目实现 用到了springboot mybatis框架 vue ajax axios element 成品效果自动刷新的信息查询点击注册跳转 跳转之后的注册页面点击返回可回到主页面点击删除按钮跳转的页面点击更正信息弹出的form表单 项目功能基本实现

【土地交易大揭秘】哪些用地必须走“招拍挂”之路?

今天咱们来聊聊一个在土地市场里热度颇高的话题——哪些用地必须通过招标、拍卖或者挂牌方式出让?这可是关乎城市建设和房地产开发的大事,对投资者和普通市民来说,了解这一点至关重要。下面,我们就来深入浅出地解读一番。招标、拍卖、挂牌出让简述首先,普及一下基本概念。…

python脚本与命令行交互sys.argv

前言在 Python 编程的世界里,sys.argv 是一个强大且实用的工具,它为我们开启了与命令行交互的大门,让程序能够接收外部传入的参数,从而实现更加灵活和多样化的功能。今天,就让我们深入探索 sys.argv 的奥秘。 “argv” 即 “argument value” 是一个列表对象,其中存储的是…

奶奶都能看懂的 CSS 选择器基础语法常用属性优先级

标题都是奶奶都能看懂了,那么我们肯定从最基础的开始讲。之所以这么自信是因为能踩的坑全帮你们踩过了…… 开始之前,先来首诗感受一下,具体啥意思你看完本文就懂了。 点类井号逗为或,类多号单连为且。 id 优先类在后,类型选择在末尾。 代码优先难解决,拿出鼠标数一数。 …

本地部署大模型体验小记

本地部署大模型的工具工具 优缺点LM Studio 图形界面友好,支持API访问,参数配置灵活Ollama GPU优化不足,CPU占用率高Chatbox 易出现输入卡顿,交互体验待优化Ollama 和 Chatbox 需要配合使用。 综合看更推荐使用 LM Studio 。 自定义模型 LM Studio 和 Ollama 除了使用默认的…

oi-math 重修

OI 数学重修 注: 很多东西没来得及写例题和代码,以后遇到会补上 想了一下虽然还有很多没写完,但是这两天要开数学了,决定后面的分成一个一个博客写然后在这挂链接,所以发出来了。 主题是看着 oi-wiki 写的,但细节上尤其是证明部分不太一样,毕竟也不是什么教学性质的,权…