put请求用于全量替换服务器资源,需用fetch或xmlhttprequest发送,指定method为'put',body传完整json数据并设置content-type: application/json,url指向具体资源id,语义上区别于patch的局部更新。

JavaScript 中用 Ajax 发送 PUT 请求替换完整资源,核心是使用 fetch() 或 XMLHttpRequest,指定请求方法为 PUT,并把完整更新后的资源数据作为请求体(body)发送,同时注意设置正确的 Content-Type 头。
用 fetch 发送 PUT 请求(推荐)
fetch() 是现代浏览器中发送 Ajax 请求的首选方式,简洁且基于 Promise。发送 PUT 请求需显式指定 method: 'PUT',并将完整资源对象转为 JSON 字符串传入 body,同时设置 Content-Type: application/json。
- 确保后端接口支持 PUT 方法,并预期接收完整资源(不是补丁)
- URL 应指向具体资源标识符,例如
/api/users/123,表示“替换 ID 为 123 的用户” - 必须设置
headers中的Content-Type,否则后端可能无法正确解析 JSON - 建议处理响应状态码(如 200/204 表示成功,400/404/409 等需捕获错误)
示例:
fetch('/api/posts/5', {
method: 'PUT',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
id: 5,
title: '新标题',
content: '完整更新后的内容',
author: '张三'
})
})
.then(res => {
if (!res.ok) throw new Error(`HTTP ${res.status}`);
return res.json();
})
.then(data => console.log('替换成功:', data))
.catch(err => console.error('请求失败:', err));
用 XMLHttpRequest 发送 PUT 请求(兼容旧环境)
若需支持较老浏览器(如 IE11),可用 XMLHttpRequest。注意手动调用 open('PUT', url),设置请求头,并用 send() 发送序列化后的数据。
- 调用
open()时第一个参数必须是字符串'PUT' - 必须在
send()前调用setRequestHeader()设置Content-Type -
send()参数应为字符串(如JSON.stringify(obj)),不能直接传对象 - 监听
onload判断status,而非仅靠readyState === 4
示例:
const xhr = new XMLHttpRequest();
xhr.open('PUT', '/api/todos/7');
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.onload = function() {
if (xhr.status >= 200 && xhr.status console.error('网络错误');
xhr.send(JSON.stringify({ id: 7, text: '全新待办', done: false }));
关键注意事项
PUT 请求语义是“全量替换”,不是部分更新(那是 PATCH 的职责)。后端通常会用请求体中的全部字段覆盖目标资源,忽略未提供的字段(除非设计为保留缺失字段)。
- 确保前端提交的数据结构与后端要求完全一致(包括字段名、类型、必填项)
- 若资源有版本号或 ETag,可在请求头中添加
If-Match避免并发冲突 - 跨域请求时,服务端需在响应头中返回
Access-Control-Allow-Methods: PUT - 某些代理或服务器默认禁用 PUT 方法,部署时需确认配置支持
与 PATCH 的区别要清楚
PUT 用于替换整个资源,客户端必须提供该资源的完整表示;PATCH 用于局部修改,只传需要变更的字段。例如:
- PUT
/api/users/100→ body 必须含{id: 100, name: "...", email: "...", role: "..."} - PATCH
/api/users/100→ body 可仅为{email: "new@example.com"}
选错方法可能导致数据丢失(如 PUT 时漏传字段被清空)或被后端拒绝。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











