JavaScript中如何发送POST请求?

来源:菜鸟站长作者:高永康头衔:资深程序员
导读:本期聚焦于小伙伴创作的《JavaScript中如何发送POST请求?》,敬请观看详情。在前端开发中,向服务器提交数据是非常常见的操作,而POST请求是提交数据最常用的请求方式之一。很多刚接触JavaScript的开发者不清楚有哪些方法可以发送POST请求,也不了解不同方法的用法和适用场景。本文将详细介绍JavaScript中发送POST请求的几种主流方式,包括原生的XMLHttpRequest、fetch API,以及第三方库axios的使用方法,同时会讲解不同方式下的参数传递规则、请求头设置方法,还有常见的注意事项,帮助开发者快速掌握POST请求的发送技巧,满足不同场景下的开发需求。

在JavaScript中发送POST请求有多种实现方式,不同的方式适用于不同的开发场景,下面将逐一介绍常用的实现方法。

JavaScript中如何发送POST请求?

一、使用XMLHttpRequest发送POST请求

XMLHttpRequest是最早的原生请求方式,兼容性较好,支持所有主流浏览器,适合需要兼容旧版本浏览器的场景。

基本的实现步骤如下:

  • 创建XMLHttpRequest实例
  • 调用open方法设置请求方法和请求地址
  • 设置请求头(根据发送的数据类型设置)
  • 监听onreadystatechange事件处理响应
  • 调用send方法发送请求数据
// 创建XMLHttpRequest实例
const xhr = new XMLHttpRequest();
// 设置请求方法和地址
xhr.open('POST', 'https://ipipp.com/api/submit');
// 设置请求头,发送JSON数据时需要设置Content-Type
xhr.setRequestHeader('Content-Type', 'application/json');
// 监听请求状态变化
xhr.onreadystatechange = function() {
  // readyState为4表示请求完成,status为200表示请求成功
  if (xhr.readyState === 4 && xhr.status === 200) {
    const response = JSON.parse(xhr.responseText);
    console.log('请求成功,返回数据:', response);
  }
};
// 准备要发送的数据,转为JSON字符串
const postData = {
  name: '测试用户',
  age: 20
};
// 发送请求
xhr.send(JSON.stringify(postData));

二、使用fetch API发送POST请求

fetch是ES6新增的原生请求API,语法更简洁,基于Promise实现,避免了回调地狱的问题,是目前主流的原生请求方式。

fetch发送POST请求时,需要传入请求配置对象,设置method为POST,同时配置请求头和请求体。

// 使用fetch发送POST请求
fetch('https://ipipp.com/api/submit', {
  method: 'POST', // 设置请求方法为POST
  headers: {
    'Content-Type': 'application/json' // 设置请求头,发送JSON数据
  },
  body: JSON.stringify({ // 设置请求体,需要转为字符串
    name: '测试用户',
    age: 20
  })
})
.then(response => {
  // 判断响应状态是否正常
  if (!response.ok) {
    throw new Error('请求失败,状态码:' + response.status);
  }
  return response.json(); // 解析响应为JSON格式
})
.then(data => {
  console.log('请求成功,返回数据:', data);
})
.catch(error => {
  console.error('请求出错:', error);
});

三、使用axios发送POST请求

axios是一个流行的第三方HTTP请求库,封装了XMLHttpRequest,使用更方便,支持拦截器、取消请求等高级功能,适合中大型项目使用。

使用前需要先引入axios库,如果是通过npm安装,可以用import引入;如果是通过script标签引入,直接使用全局的axios变量即可。

// 使用axios发送POST请求
axios.post('https://ipipp.com/api/submit', {
  name: '测试用户',
  age: 20
}, {
  headers: {
    'Content-Type': 'application/json'
  }
})
.then(response => {
  console.log('请求成功,返回数据:', response.data);
})
.catch(error => {
  console.error('请求出错:', error);
});

四、不同数据格式的POST请求处理

发送POST请求时,根据后端接收的数据格式不同,需要设置不同的Content-Type和请求体格式:

数据类型Content-Type值请求体格式
JSON数据application/jsonJSON.stringify(数据对象)
表单数据application/x-www-form-urlencodedkey1=value1&key2=value2 格式字符串
FormData格式multipart/form-data(通常不需要手动设置,浏览器会自动添加边界)new FormData() 实例,通过append方法添加数据

五、注意事项

  • 发送POST请求时要注意跨域问题,如果请求地址和当前页面域名不同,需要后端配置CORS或者前端使用代理。
  • 使用fetch时,即使请求返回4xx、5xx状态码,也不会进入catch回调,需要手动判断response.ok状态。
  • 发送FormData格式数据时,不要手动设置Content-Type,否则可能导致边界丢失,后端无法解析数据。
  • 敏感数据发送时建议配合HTTPS使用,避免数据在传输过程中被窃取。

以上就是JavaScript中发送POST请求的几种常用方法,开发者可以根据项目的兼容需求、功能需求选择合适的实现方式。

JavaScriptPOST请求fetchXMLHttpRequestaxios修改时间:2026-06-07 03:38:12

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。